279 changed files with 5935 additions and 5542 deletions
@ -0,0 +1,14 @@ |
|||||
|
@echo off |
||||
|
echo. |
||||
|
echo [信息] 运行Web工程。 |
||||
|
echo. |
||||
|
|
||||
|
cd %~dp0 |
||||
|
cd ../ruoyi-admin/target |
||||
|
|
||||
|
set JAVA_OPTS=-Xms256m -Xmx1024m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=512m |
||||
|
|
||||
|
java -jar %JAVA_OPTS% ruoyi-admin.jar |
||||
|
|
||||
|
cd bin |
||||
|
pause |
@ -0,0 +1,103 @@ |
|||||
|
若依系统开发环境搭建手册 |
||||
|
1. 准备工作 |
||||
|
1.1 前置环境准备 -- -- 安装Maven |
||||
|
若依基于Maven管理项目的构建,需要先安装好相应的版本。 |
||||
|
1.2 开发工具 |
||||
|
若依系统采用Eclipse作为开发工具。但不局限于Eclipse。此处仅介绍在Eclipse搭建开发环境所需的操作。 |
||||
|
2. 开发环境搭建 |
||||
|
2.1 开发工具的配置 |
||||
|
2.1.1 配置Maven |
||||
|
进入Window->Preferences->Maven->Installations页面,设置已经安装好的Maven |
||||
|
|
||||
|
2.1.2 配置Maven仓库路径 |
||||
|
进入Window->Preferences->Maven->User Settings页面,配置仓库路径 |
||||
|
|
||||
|
2.1.4 关闭校验 |
||||
|
进入Window->Preferences->Validation页面,勾选"Suspend all validators",关闭校验 |
||||
|
|
||||
|
2.2 导入工程 |
||||
|
通过Eclipse导入工程,步骤如下: |
||||
|
(1)点击左侧项目区域 -- >Import... |
||||
|
|
||||
|
(2)选择RuoYi |
||||
|
|
||||
|
(3)点击Finish |
||||
|
|
||||
|
(4)RuoYi的代码就被导出到Eclipse中了,此时可以在工程视图中看到。 |
||||
|
|
||||
|
3. 运行若依系统 |
||||
|
3.1 必要的配置 |
||||
|
3.1.1 修改数据库连接 |
||||
|
编辑src/main/ resources目录下的application-druid.yml 文件,修改数据库地址账号信息。 |
||||
|
执行sql/ ry_20180423.sql,quartz.sql 两个文件 日期随版本变化 |
||||
|
3.1.2 开发环境配置 |
||||
|
编辑src/main/ resources目录下的application.yml 文件, |
||||
|
默认端口为80 |
||||
|
|
||||
|
3.1.3 代码生成配置 |
||||
|
编辑src/main/ resources目录下的application.yml 文件, |
||||
|
|
||||
|
默认为module,根据实际情况修改即可。生成的表要有注释 |
||||
|
|
||||
|
注:如对模板有特殊需求,可自行修改。编辑src/main/ resources/templates/vm目录下 |
||||
|
|
||||
|
|
||||
|
3.1.4 日志配置 |
||||
|
编辑src/main/ resources目录下的logback.yml 文件 |
||||
|
<property name="log.path" value="/home/ruoyi/logs" /> |
||||
|
改为自己需要的路径 |
||||
|
|
||||
|
3.2 启动及验证(后台) |
||||
|
启动RuoYiApplication.java 出现如下图表示启动成功 |
||||
|
|
||||
|
打开浏览器,输入:http://localhost:8080/captchaImage |
||||
|
若能正确显示返回信息,搭建后台成功。 |
||||
|
|
||||
|
3.3 启动及验证(前台) |
||||
|
# 进入项目目录 |
||||
|
cd ruoyi-ui |
||||
|
|
||||
|
npm install --registry=https://registry.npm.taobao.org |
||||
|
|
||||
|
npm run dev |
||||
|
|
||||
|
打开浏览器,输入:http://localhost:80 (默认账户 admin/admin123) |
||||
|
若能正确展示登录页面,并能成功登录,菜单及页面展示正常,则表明环境搭建成功 |
||||
|
注意:执行npm命令需要配置node环境 |
||||
|
4. 部署若依系统 |
||||
|
4.1 war部署方式 |
||||
|
4.1.1 修改pom.xml文件。将jar修改为war |
||||
|
|
||||
|
如果是分模块需要修改ruoyi-admin |
||||
|
|
||||
|
|
||||
|
4.1.2 在spring-boot-starter依赖中移除tomcat模块 |
||||
|
|
||||
|
<exclusions> |
||||
|
<exclusion> |
||||
|
<artifactId>spring-boot-starter-tomcat</artifactId> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
</exclusion> |
||||
|
</exclusions> |
||||
|
|
||||
|
4.1.3 部署到tomcat的webapps目录下面 |
||||
|
默认为RuoYi.war |
||||
|
|
||||
|
4.1.4 启动及验证 |
||||
|
运行startup.bat 出现如下图即部署成功 |
||||
|
|
||||
|
4.2 Jar方式部署 |
||||
|
执行命令:java - jar RuoYi.jar |
||||
|
脚本执行:ry.sh start 启动stop 停止 |
||||
|
|
||||
|
4.2 前端部署 |
||||
|
# 打包正式环境 |
||||
|
npm run build:prod |
||||
|
|
||||
|
# 打包预发布环境 |
||||
|
npm run build:stage |
||||
|
|
||||
|
构建打包成功之后,会在根目录生成 dist 文件夹,里面就是构建打包好的文件,通常是 ***.js 、***.css、index.html 等静态文件。发布到你的 nginx 或者静态服务器即可,其中的 index.html 是后台服务的入口页面。 |
||||
|
|
||||
|
演示地址:ruoyi.vip |
||||
|
文档地址:doc.ruoyi.vip |
@ -0,0 +1,234 @@ |
|||||
|
<?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.0.0</version> |
||||
|
|
||||
|
<name>ruoyi</name> |
||||
|
<url>http://www.ruoyi.vip</url> |
||||
|
<description>若依管理系统</description> |
||||
|
|
||||
|
<properties> |
||||
|
<ruoyi.version>3.0.0</ruoyi.version> |
||||
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> |
||||
|
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> |
||||
|
<java.version>1.8</java.version> |
||||
|
<mybatis.boot.version>1.3.2</mybatis.boot.version> |
||||
|
<druid.version>1.1.14</druid.version> |
||||
|
<bitwalker.version>1.19</bitwalker.version> |
||||
|
<swagger.version>2.9.2</swagger.version> |
||||
|
<pagehelper.boot.version>1.2.5</pagehelper.boot.version> |
||||
|
<fastjson.version>1.2.70</fastjson.version> |
||||
|
<oshi.version>3.9.1</oshi.version> |
||||
|
<commons.io.version>2.5</commons.io.version> |
||||
|
<commons.fileupload.version>1.3.3</commons.fileupload.version> |
||||
|
<poi.version>3.17</poi.version> |
||||
|
<velocity.version>1.7</velocity.version> |
||||
|
<jwt.version>0.9.0</jwt.version> |
||||
|
</properties> |
||||
|
|
||||
|
<!-- 依赖声明 --> |
||||
|
<dependencyManagement> |
||||
|
<dependencies> |
||||
|
|
||||
|
<!-- SpringBoot的依赖配置--> |
||||
|
<dependency> |
||||
|
<groupId>org.springframework.boot</groupId> |
||||
|
<artifactId>spring-boot-dependencies</artifactId> |
||||
|
<version>2.1.1.RELEASE</version> |
||||
|
<type>pom</type> |
||||
|
<scope>import</scope> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--阿里数据库连接池 --> |
||||
|
<dependency> |
||||
|
<groupId>com.alibaba</groupId> |
||||
|
<artifactId>druid-spring-boot-starter</artifactId> |
||||
|
<version>${druid.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- 解析客户端操作系统、浏览器等 --> |
||||
|
<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>com.github.oshi</groupId> |
||||
|
<artifactId>oshi-core</artifactId> |
||||
|
<version>${oshi.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- swagger2--> |
||||
|
<dependency> |
||||
|
<groupId>io.springfox</groupId> |
||||
|
<artifactId>springfox-swagger2</artifactId> |
||||
|
<version>${swagger.version}</version> |
||||
|
<exclusions> |
||||
|
<exclusion> |
||||
|
<groupId>io.swagger</groupId> |
||||
|
<artifactId>swagger-annotations</artifactId> |
||||
|
</exclusion> |
||||
|
<exclusion> |
||||
|
<groupId>io.swagger</groupId> |
||||
|
<artifactId>swagger-models</artifactId> |
||||
|
</exclusion> |
||||
|
</exclusions> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- swagger2-UI--> |
||||
|
<dependency> |
||||
|
<groupId>io.springfox</groupId> |
||||
|
<artifactId>springfox-swagger-ui</artifactId> |
||||
|
<version>${swagger.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--io常用工具类 --> |
||||
|
<dependency> |
||||
|
<groupId>commons-io</groupId> |
||||
|
<artifactId>commons-io</artifactId> |
||||
|
<version>${commons.io.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--文件上传工具类 --> |
||||
|
<dependency> |
||||
|
<groupId>commons-fileupload</groupId> |
||||
|
<artifactId>commons-fileupload</artifactId> |
||||
|
<version>${commons.fileupload.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- excel工具 --> |
||||
|
<dependency> |
||||
|
<groupId>org.apache.poi</groupId> |
||||
|
<artifactId>poi-ooxml</artifactId> |
||||
|
<version>${poi.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--velocity代码生成使用模板 --> |
||||
|
<dependency> |
||||
|
<groupId>org.apache.velocity</groupId> |
||||
|
<artifactId>velocity</artifactId> |
||||
|
<version>${velocity.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- 阿里JSON解析器 --> |
||||
|
<dependency> |
||||
|
<groupId>com.alibaba</groupId> |
||||
|
<artifactId>fastjson</artifactId> |
||||
|
<version>${fastjson.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--Token生成与解析--> |
||||
|
<dependency> |
||||
|
<groupId>io.jsonwebtoken</groupId> |
||||
|
<artifactId>jjwt</artifactId> |
||||
|
<version>${jwt.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- 定时任务--> |
||||
|
<dependency> |
||||
|
<groupId>com.ruoyi</groupId> |
||||
|
<artifactId>ruoyi-quartz</artifactId> |
||||
|
<version>${ruoyi.version}</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- 代码生成--> |
||||
|
<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> |
||||
|
|
||||
|
</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> |
||||
|
|
||||
|
|
||||
|
<dependencies> |
||||
|
|
||||
|
</dependencies> |
||||
|
|
||||
|
<build> |
||||
|
<plugins> |
||||
|
<plugin> |
||||
|
<groupId>org.apache.maven.plugins</groupId> |
||||
|
<artifactId>maven-compiler-plugin</artifactId> |
||||
|
<version>3.1</version> |
||||
|
<configuration> |
||||
|
<source>${java.version}</source> |
||||
|
<target>${java.version}</target> |
||||
|
<encoding>${project.build.sourceEncoding}</encoding> |
||||
|
</configuration> |
||||
|
</plugin> |
||||
|
</plugins> |
||||
|
</build> |
||||
|
|
||||
|
<repositories> |
||||
|
<repository> |
||||
|
<id>public</id> |
||||
|
<name>aliyun nexus</name> |
||||
|
<url>http://maven.aliyun.com/nexus/content/groups/public/</url> |
||||
|
<releases> |
||||
|
<enabled>true</enabled> |
||||
|
</releases> |
||||
|
</repository> |
||||
|
</repositories> |
||||
|
|
||||
|
<pluginRepositories> |
||||
|
<pluginRepository> |
||||
|
<id>public</id> |
||||
|
<name>aliyun nexus</name> |
||||
|
<url>http://maven.aliyun.com/nexus/content/groups/public/</url> |
||||
|
<releases> |
||||
|
<enabled>true</enabled> |
||||
|
</releases> |
||||
|
<snapshots> |
||||
|
<enabled>false</enabled> |
||||
|
</snapshots> |
||||
|
</pluginRepository> |
||||
|
</pluginRepositories> |
||||
|
|
||||
|
</project> |
@ -0,0 +1,108 @@ |
|||||
|
<?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.0.0</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> |
||||
|
|
||||
|
<!-- swagger2--> |
||||
|
<dependency> |
||||
|
<groupId>io.springfox</groupId> |
||||
|
<artifactId>springfox-swagger2</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--防止进入swagger页面报类型转换错误,排除2.9.2中的引用,手动增加1.5.21版本--> |
||||
|
<dependency> |
||||
|
<groupId>io.swagger</groupId> |
||||
|
<artifactId>swagger-annotations</artifactId> |
||||
|
<version>1.5.21</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<dependency> |
||||
|
<groupId>io.swagger</groupId> |
||||
|
<artifactId>swagger-models</artifactId> |
||||
|
<version>1.5.21</version> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- swagger2-UI--> |
||||
|
<dependency> |
||||
|
<groupId>io.springfox</groupId> |
||||
|
<artifactId>springfox-swagger-ui</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- Mysql驱动包 --> |
||||
|
<dependency> |
||||
|
<groupId>mysql</groupId> |
||||
|
<artifactId>mysql-connector-java</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- 核心模块--> |
||||
|
<dependency> |
||||
|
<groupId>com.ruoyi</groupId> |
||||
|
<artifactId>ruoyi-framework</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- 定时任务--> |
||||
|
<dependency> |
||||
|
<groupId>com.ruoyi</groupId> |
||||
|
<artifactId>ruoyi-quartz</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- 代码生成--> |
||||
|
<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.1.1.RELEASE</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.0.0</version> |
||||
|
<configuration> |
||||
|
<failOnMissingWebXml>false</failOnMissingWebXml> |
||||
|
<warName>${project.artifactId}</warName> |
||||
|
</configuration> |
||||
|
</plugin> |
||||
|
</plugins> |
||||
|
<finalName>${project.artifactId}</finalName> |
||||
|
</build> |
||||
|
|
||||
|
</project> |
@ -1,11 +1,11 @@ |
|||||
package com.ruoyi.project.monitor.controller; |
package com.ruoyi.web.controller.monitor; |
||||
|
|
||||
import org.springframework.security.access.prepost.PreAuthorize; |
import org.springframework.security.access.prepost.PreAuthorize; |
||||
import org.springframework.web.bind.annotation.GetMapping; |
import org.springframework.web.bind.annotation.GetMapping; |
||||
import org.springframework.web.bind.annotation.RequestMapping; |
import org.springframework.web.bind.annotation.RequestMapping; |
||||
import org.springframework.web.bind.annotation.RestController; |
import org.springframework.web.bind.annotation.RestController; |
||||
import com.ruoyi.framework.web.controller.BaseController; |
import com.ruoyi.common.core.controller.BaseController; |
||||
import com.ruoyi.framework.web.domain.AjaxResult; |
import com.ruoyi.common.core.domain.AjaxResult; |
||||
import com.ruoyi.framework.web.domain.Server; |
import com.ruoyi.framework.web.domain.Server; |
||||
|
|
||||
/** |
/** |
@ -0,0 +1,24 @@ |
|||||
|
package com.ruoyi.web.controller.tool; |
||||
|
|
||||
|
import org.springframework.security.access.prepost.PreAuthorize; |
||||
|
import org.springframework.stereotype.Controller; |
||||
|
import org.springframework.web.bind.annotation.GetMapping; |
||||
|
import org.springframework.web.bind.annotation.RequestMapping; |
||||
|
import com.ruoyi.common.core.controller.BaseController; |
||||
|
|
||||
|
/** |
||||
|
* swagger 接口 |
||||
|
* |
||||
|
* @author ruoyi |
||||
|
*/ |
||||
|
@Controller |
||||
|
@RequestMapping("/tool/swagger") |
||||
|
public class SwaggerController extends BaseController |
||||
|
{ |
||||
|
@PreAuthorize("@ss.hasPermi('tool:swagger:view')") |
||||
|
@GetMapping() |
||||
|
public String index() |
||||
|
{ |
||||
|
return redirect("/swagger-ui.html"); |
||||
|
} |
||||
|
} |
@ -0,0 +1,124 @@ |
|||||
|
<?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.0.0</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>javax.validation</groupId> |
||||
|
<artifactId>validation-api</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解析器 --> |
||||
|
<dependency> |
||||
|
<groupId>com.alibaba</groupId> |
||||
|
<artifactId>fastjson</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- io常用工具类 --> |
||||
|
<dependency> |
||||
|
<groupId>commons-io</groupId> |
||||
|
<artifactId>commons-io</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- 文件上传工具类 --> |
||||
|
<dependency> |
||||
|
<groupId>commons-fileupload</groupId> |
||||
|
<artifactId>commons-fileupload</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- excel工具 --> |
||||
|
<dependency> |
||||
|
<groupId>org.apache.poi</groupId> |
||||
|
<artifactId>poi-ooxml</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- yml解析器 --> |
||||
|
<dependency> |
||||
|
<groupId>org.yaml</groupId> |
||||
|
<artifactId>snakeyaml</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!--Token生成与解析--> |
||||
|
<dependency> |
||||
|
<groupId>io.jsonwebtoken</groupId> |
||||
|
<artifactId>jjwt</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> |
||||
|
|
||||
|
<!-- 解析客户端操作系统、浏览器等 --> |
||||
|
<dependency> |
||||
|
<groupId>eu.bitwalker</groupId> |
||||
|
<artifactId>UserAgentUtils</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
<!-- servlet包 --> |
||||
|
<dependency> |
||||
|
<groupId>javax.servlet</groupId> |
||||
|
<artifactId>javax.servlet-api</artifactId> |
||||
|
</dependency> |
||||
|
|
||||
|
</dependencies> |
||||
|
|
||||
|
</project> |
@ -1,4 +1,4 @@ |
|||||
package com.ruoyi.framework.aspectj.lang.annotation; |
package com.ruoyi.common.annotation; |
||||
|
|
||||
import java.lang.annotation.Documented; |
import java.lang.annotation.Documented; |
||||
import java.lang.annotation.ElementType; |
import java.lang.annotation.ElementType; |
@ -1,118 +1,118 @@ |
|||||
package com.ruoyi.framework.aspectj.lang.annotation; |
package com.ruoyi.common.annotation; |
||||
|
|
||||
import java.lang.annotation.ElementType; |
import java.lang.annotation.ElementType; |
||||
import java.lang.annotation.Retention; |
import java.lang.annotation.Retention; |
||||
import java.lang.annotation.RetentionPolicy; |
import java.lang.annotation.RetentionPolicy; |
||||
import java.lang.annotation.Target; |
import java.lang.annotation.Target; |
||||
|
|
||||
/** |
/** |
||||
* 自定义导出Excel数据注解 |
* 自定义导出Excel数据注解 |
||||
* |
* |
||||
* @author ruoyi |
* @author ruoyi |
||||
*/ |
*/ |
||||
@Retention(RetentionPolicy.RUNTIME) |
@Retention(RetentionPolicy.RUNTIME) |
||||
@Target(ElementType.FIELD) |
@Target(ElementType.FIELD) |
||||
public @interface Excel |
public @interface Excel |
||||
{ |
{ |
||||
/** |
/** |
||||
* 导出时在excel中排序 |
* 导出时在excel中排序 |
||||
*/ |
*/ |
||||
public int sort() default Integer.MAX_VALUE; |
public int sort() default Integer.MAX_VALUE; |
||||
|
|
||||
/** |
/** |
||||
* 导出到Excel中的名字. |
* 导出到Excel中的名字. |
||||
*/ |
*/ |
||||
public String name() default ""; |
public String name() default ""; |
||||
|
|
||||
/** |
/** |
||||
* 日期格式, 如: yyyy-MM-dd |
* 日期格式, 如: yyyy-MM-dd |
||||
*/ |
*/ |
||||
public String dateFormat() default ""; |
public String dateFormat() default ""; |
||||
|
|
||||
/** |
/** |
||||
* 读取内容转表达式 (如: 0=男,1=女,2=未知) |
* 读取内容转表达式 (如: 0=男,1=女,2=未知) |
||||
*/ |
*/ |
||||
public String readConverterExp() default ""; |
public String readConverterExp() default ""; |
||||
|
|
||||
/** |
/** |
||||
* 导出类型(0数字 1字符串) |
* 导出类型(0数字 1字符串) |
||||
*/ |
*/ |
||||
public ColumnType cellType() default ColumnType.STRING; |
public ColumnType cellType() default ColumnType.STRING; |
||||
|
|
||||
/** |
/** |
||||
* 导出时在excel中每个列的高度 单位为字符 |
* 导出时在excel中每个列的高度 单位为字符 |
||||
*/ |
*/ |
||||
public double height() default 14; |
public double height() default 14; |
||||
|
|
||||
/** |
/** |
||||
* 导出时在excel中每个列的宽 单位为字符 |
* 导出时在excel中每个列的宽 单位为字符 |
||||
*/ |
*/ |
||||
public double width() default 16; |
public double width() default 16; |
||||
|
|
||||
/** |
/** |
||||
* 文字后缀,如% 90 变成90% |
* 文字后缀,如% 90 变成90% |
||||
*/ |
*/ |
||||
public String suffix() default ""; |
public String suffix() default ""; |
||||
|
|
||||
/** |
/** |
||||
* 当值为空时,字段的默认值 |
* 当值为空时,字段的默认值 |
||||
*/ |
*/ |
||||
public String defaultValue() default ""; |
public String defaultValue() default ""; |
||||
|
|
||||
/** |
/** |
||||
* 提示信息 |
* 提示信息 |
||||
*/ |
*/ |
||||
public String prompt() default ""; |
public String prompt() default ""; |
||||
|
|
||||
/** |
/** |
||||
* 设置只能选择不能输入的列内容. |
* 设置只能选择不能输入的列内容. |
||||
*/ |
*/ |
||||
public String[] combo() default {}; |
public String[] combo() default {}; |
||||
|
|
||||
/** |
/** |
||||
* 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写. |
* 是否导出数据,应对需求:有时我们需要导出一份模板,这是标题需要但内容需要用户手工填写. |
||||
*/ |
*/ |
||||
public boolean isExport() default true; |
public boolean isExport() default true; |
||||
|
|
||||
/** |
/** |
||||
* 另一个类中的属性名称,支持多级获取,以小数点隔开 |
* 另一个类中的属性名称,支持多级获取,以小数点隔开 |
||||
*/ |
*/ |
||||
public String targetAttr() default ""; |
public String targetAttr() default ""; |
||||
|
|
||||
/** |
/** |
||||
* 字段类型(0:导出导入;1:仅导出;2:仅导入) |
* 字段类型(0:导出导入;1:仅导出;2:仅导入) |
||||
*/ |
*/ |
||||
Type type() default Type.ALL; |
Type type() default Type.ALL; |
||||
|
|
||||
public enum Type |
public enum Type |
||||
{ |
{ |
||||
ALL(0), EXPORT(1), IMPORT(2); |
ALL(0), EXPORT(1), IMPORT(2); |
||||
private final int value; |
private final int value; |
||||
|
|
||||
Type(int value) |
Type(int value) |
||||
{ |
{ |
||||
this.value = value; |
this.value = value; |
||||
} |
} |
||||
|
|
||||
public int value() |
public int value() |
||||
{ |
{ |
||||
return this.value; |
return this.value; |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
public enum ColumnType |
public enum ColumnType |
||||
{ |
{ |
||||
NUMERIC(0), STRING(1); |
NUMERIC(0), STRING(1); |
||||
private final int value; |
private final int value; |
||||
|
|
||||
ColumnType(int value) |
ColumnType(int value) |
||||
{ |
{ |
||||
this.value = value; |
this.value = value; |
||||
} |
} |
||||
|
|
||||
public int value() |
public int value() |
||||
{ |
{ |
||||
return this.value; |
return this.value; |
||||
} |
} |
||||
} |
} |
||||
} |
} |
@ -1,18 +1,18 @@ |
|||||
package com.ruoyi.framework.aspectj.lang.annotation; |
package com.ruoyi.common.annotation; |
||||
|
|
||||
import java.lang.annotation.ElementType; |
import java.lang.annotation.ElementType; |
||||
import java.lang.annotation.Retention; |
import java.lang.annotation.Retention; |
||||
import java.lang.annotation.RetentionPolicy; |
import java.lang.annotation.RetentionPolicy; |
||||
import java.lang.annotation.Target; |
import java.lang.annotation.Target; |
||||
|
|
||||
/** |
/** |
||||
* Excel注解集 |
* Excel注解集 |
||||
* |
* |
||||
* @author ruoyi |
* @author ruoyi |
||||
*/ |
*/ |
||||
@Target(ElementType.FIELD) |
@Target(ElementType.FIELD) |
||||
@Retention(RetentionPolicy.RUNTIME) |
@Retention(RetentionPolicy.RUNTIME) |
||||
public @interface Excels |
public @interface Excels |
||||
{ |
{ |
||||
Excel[] value(); |
Excel[] value(); |
||||
} |
} |
@ -1,12 +1,12 @@ |
|||||
package com.ruoyi.framework.aspectj.lang.annotation; |
package com.ruoyi.common.annotation; |
||||
|
|
||||
import java.lang.annotation.Documented; |
import java.lang.annotation.Documented; |
||||
import java.lang.annotation.ElementType; |
import java.lang.annotation.ElementType; |
||||
import java.lang.annotation.Retention; |
import java.lang.annotation.Retention; |
||||
import java.lang.annotation.RetentionPolicy; |
import java.lang.annotation.RetentionPolicy; |
||||
import java.lang.annotation.Target; |
import java.lang.annotation.Target; |
||||
import com.ruoyi.framework.aspectj.lang.enums.BusinessType; |
import com.ruoyi.common.enums.BusinessType; |
||||
import com.ruoyi.framework.aspectj.lang.enums.OperatorType; |
import com.ruoyi.common.enums.OperatorType; |
||||
|
|
||||
/** |
/** |
||||
* 自定义操作日志记录注解 |
* 自定义操作日志记录注解 |
@ -1,23 +1,23 @@ |
|||||
package com.ruoyi.framework.interceptor.annotation; |
package com.ruoyi.common.annotation; |
||||
|
|
||||
import java.lang.annotation.Documented; |
import java.lang.annotation.Documented; |
||||
import java.lang.annotation.ElementType; |
import java.lang.annotation.ElementType; |
||||
import java.lang.annotation.Inherited; |
import java.lang.annotation.Inherited; |
||||
import java.lang.annotation.Retention; |
import java.lang.annotation.Retention; |
||||
import java.lang.annotation.RetentionPolicy; |
import java.lang.annotation.RetentionPolicy; |
||||
import java.lang.annotation.Target; |
import java.lang.annotation.Target; |
||||
|
|
||||
/** |
/** |
||||
* 自定义注解防止表单重复提交 |
* 自定义注解防止表单重复提交 |
||||
* |
* |
||||
* @author ruoyi |
* @author ruoyi |
||||
* |
* |
||||
*/ |
*/ |
||||
@Inherited |
@Inherited |
||||
@Target(ElementType.METHOD) |
@Target(ElementType.METHOD) |
||||
@Retention(RetentionPolicy.RUNTIME) |
@Retention(RetentionPolicy.RUNTIME) |
||||
@Documented |
@Documented |
||||
public @interface RepeatSubmit |
public @interface RepeatSubmit |
||||
{ |
{ |
||||
|
|
||||
} |
} |
@ -1,50 +1,50 @@ |
|||||
package com.ruoyi.common.constant; |
package com.ruoyi.common.constant; |
||||
|
|
||||
/** |
/** |
||||
* 任务调度通用常量 |
* 任务调度通用常量 |
||||
* |
* |
||||
* @author ruoyi |
* @author ruoyi |
||||
*/ |
*/ |
||||
public class ScheduleConstants |
public class ScheduleConstants |
||||
{ |
{ |
||||
public static final String TASK_CLASS_NAME = "TASK_CLASS_NAME"; |
public static final String TASK_CLASS_NAME = "TASK_CLASS_NAME"; |
||||
|
|
||||
/** 执行目标key */ |
/** 执行目标key */ |
||||
public static final String TASK_PROPERTIES = "TASK_PROPERTIES"; |
public static final String TASK_PROPERTIES = "TASK_PROPERTIES"; |
||||
|
|
||||
/** 默认 */ |
/** 默认 */ |
||||
public static final String MISFIRE_DEFAULT = "0"; |
public static final String MISFIRE_DEFAULT = "0"; |
||||
|
|
||||
/** 立即触发执行 */ |
/** 立即触发执行 */ |
||||
public static final String MISFIRE_IGNORE_MISFIRES = "1"; |
public static final String MISFIRE_IGNORE_MISFIRES = "1"; |
||||
|
|
||||
/** 触发一次执行 */ |
/** 触发一次执行 */ |
||||
public static final String MISFIRE_FIRE_AND_PROCEED = "2"; |
public static final String MISFIRE_FIRE_AND_PROCEED = "2"; |
||||
|
|
||||
/** 不触发立即执行 */ |
/** 不触发立即执行 */ |
||||
public static final String MISFIRE_DO_NOTHING = "3"; |
public static final String MISFIRE_DO_NOTHING = "3"; |
||||
|
|
||||
public enum Status |
public enum Status |
||||
{ |
{ |
||||
/** |
/** |
||||
* 正常 |
* 正常 |
||||
*/ |
*/ |
||||
NORMAL("0"), |
NORMAL("0"), |
||||
/** |
/** |
||||
* 暂停 |
* 暂停 |
||||
*/ |
*/ |
||||
PAUSE("1"); |
PAUSE("1"); |
||||
|
|
||||
private String value; |
private String value; |
||||
|
|
||||
private Status(String value) |
private Status(String value) |
||||
{ |
{ |
||||
this.value = value; |
this.value = value; |
||||
} |
} |
||||
|
|
||||
public String getValue() |
public String getValue() |
||||
{ |
{ |
||||
return value; |
return value; |
||||
} |
} |
||||
} |
} |
||||
} |
} |
@ -1,4 +1,4 @@ |
|||||
package com.ruoyi.framework.web.domain; |
package com.ruoyi.common.core.domain; |
||||
|
|
||||
import java.util.HashMap; |
import java.util.HashMap; |
||||
import com.ruoyi.common.constant.HttpStatus; |
import com.ruoyi.common.constant.HttpStatus; |
@ -1,4 +1,4 @@ |
|||||
package com.ruoyi.framework.web.domain; |
package com.ruoyi.common.core.domain; |
||||
|
|
||||
import java.io.Serializable; |
import java.io.Serializable; |
||||
import java.util.Date; |
import java.util.Date; |
@ -1,4 +1,4 @@ |
|||||
package com.ruoyi.framework.web.domain; |
package com.ruoyi.common.core.domain; |
||||
|
|
||||
import java.util.ArrayList; |
import java.util.ArrayList; |
||||
import java.util.List; |
import java.util.List; |
@ -1,11 +1,11 @@ |
|||||
package com.ruoyi.framework.web.domain; |
package com.ruoyi.common.core.domain; |
||||
|
|
||||
import java.io.Serializable; |
import java.io.Serializable; |
||||
import java.util.List; |
import java.util.List; |
||||
import java.util.stream.Collectors; |
import java.util.stream.Collectors; |
||||
import com.fasterxml.jackson.annotation.JsonInclude; |
import com.fasterxml.jackson.annotation.JsonInclude; |
||||
import com.ruoyi.project.system.domain.SysDept; |
import com.ruoyi.common.core.domain.entity.SysDept; |
||||
import com.ruoyi.project.system.domain.SysMenu; |
import com.ruoyi.common.core.domain.entity.SysMenu; |
||||
|
|
||||
/** |
/** |
||||
* Treeselect树结构实体类 |
* Treeselect树结构实体类 |
@ -1,13 +1,13 @@ |
|||||
package com.ruoyi.project.system.domain; |
package com.ruoyi.common.core.domain.entity; |
||||
|
|
||||
import javax.validation.constraints.NotBlank; |
import javax.validation.constraints.NotBlank; |
||||
import javax.validation.constraints.Size; |
import javax.validation.constraints.Size; |
||||
import org.apache.commons.lang3.builder.ToStringBuilder; |
import org.apache.commons.lang3.builder.ToStringBuilder; |
||||
import org.apache.commons.lang3.builder.ToStringStyle; |
import org.apache.commons.lang3.builder.ToStringStyle; |
||||
|
import com.ruoyi.common.annotation.Excel; |
||||
|
import com.ruoyi.common.annotation.Excel.ColumnType; |
||||
import com.ruoyi.common.constant.UserConstants; |
import com.ruoyi.common.constant.UserConstants; |
||||
import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
import com.ruoyi.common.core.domain.BaseEntity; |
||||
import com.ruoyi.framework.aspectj.lang.annotation.Excel.ColumnType; |
|
||||
import com.ruoyi.framework.web.domain.BaseEntity; |
|
||||
|
|
||||
/** |
/** |
||||
* 字典数据表 sys_dict_data |
* 字典数据表 sys_dict_data |
@ -1,12 +1,12 @@ |
|||||
package com.ruoyi.project.system.domain; |
package com.ruoyi.common.core.domain.entity; |
||||
|
|
||||
import javax.validation.constraints.NotBlank; |
import javax.validation.constraints.NotBlank; |
||||
import javax.validation.constraints.Size; |
import javax.validation.constraints.Size; |
||||
import org.apache.commons.lang3.builder.ToStringBuilder; |
import org.apache.commons.lang3.builder.ToStringBuilder; |
||||
import org.apache.commons.lang3.builder.ToStringStyle; |
import org.apache.commons.lang3.builder.ToStringStyle; |
||||
import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
import com.ruoyi.common.annotation.Excel; |
||||
import com.ruoyi.framework.aspectj.lang.annotation.Excel.ColumnType; |
import com.ruoyi.common.annotation.Excel.ColumnType; |
||||
import com.ruoyi.framework.web.domain.BaseEntity; |
import com.ruoyi.common.core.domain.BaseEntity; |
||||
|
|
||||
/** |
/** |
||||
* 字典类型表 sys_dict_type |
* 字典类型表 sys_dict_type |
@ -1,12 +1,12 @@ |
|||||
package com.ruoyi.project.system.domain; |
package com.ruoyi.common.core.domain.entity; |
||||
|
|
||||
import javax.validation.constraints.NotBlank; |
import javax.validation.constraints.NotBlank; |
||||
import javax.validation.constraints.Size; |
import javax.validation.constraints.Size; |
||||
import org.apache.commons.lang3.builder.ToStringBuilder; |
import org.apache.commons.lang3.builder.ToStringBuilder; |
||||
import org.apache.commons.lang3.builder.ToStringStyle; |
import org.apache.commons.lang3.builder.ToStringStyle; |
||||
import com.ruoyi.framework.aspectj.lang.annotation.Excel; |
import com.ruoyi.common.annotation.Excel; |
||||
import com.ruoyi.framework.aspectj.lang.annotation.Excel.ColumnType; |
import com.ruoyi.common.annotation.Excel.ColumnType; |
||||
import com.ruoyi.framework.web.domain.BaseEntity; |
import com.ruoyi.common.core.domain.BaseEntity; |
||||
|
|
||||
/** |
/** |
||||
* 角色表 sys_role |
* 角色表 sys_role |
@ -1,4 +1,4 @@ |
|||||
package com.ruoyi.framework.security; |
package com.ruoyi.common.core.domain.model; |
||||
|
|
||||
/** |
/** |
||||
* 用户登录对象 |
* 用户登录对象 |
@ -1,11 +1,11 @@ |
|||||
package com.ruoyi.framework.security; |
package com.ruoyi.common.core.domain.model; |
||||
|
|
||||
import java.util.Collection; |
import java.util.Collection; |
||||
import java.util.Set; |
import java.util.Set; |
||||
import org.springframework.security.core.GrantedAuthority; |
import org.springframework.security.core.GrantedAuthority; |
||||
import org.springframework.security.core.userdetails.UserDetails; |
import org.springframework.security.core.userdetails.UserDetails; |
||||
import com.fasterxml.jackson.annotation.JsonIgnore; |
import com.fasterxml.jackson.annotation.JsonIgnore; |
||||
import com.ruoyi.project.system.domain.SysUser; |
import com.ruoyi.common.core.domain.entity.SysUser; |
||||
|
|
||||
/** |
/** |
||||
* 登录用户身份权限 |
* 登录用户身份权限 |
@ -1,4 +1,4 @@ |
|||||
package com.ruoyi.framework.web.page; |
package com.ruoyi.common.core.page; |
||||
|
|
||||
import com.ruoyi.common.utils.ServletUtils; |
import com.ruoyi.common.utils.ServletUtils; |
||||
|
|
@ -1,4 +1,4 @@ |
|||||
package com.ruoyi.framework.redis; |
package com.ruoyi.common.core.redis; |
||||
|
|
||||
import java.util.Collection; |
import java.util.Collection; |
||||
import java.util.List; |
import java.util.List; |
@ -1,4 +1,4 @@ |
|||||
package com.ruoyi.framework.aspectj.lang.enums; |
package com.ruoyi.common.enums; |
||||
|
|
||||
/** |
/** |
||||
* 操作状态 |
* 操作状态 |
@ -1,4 +1,4 @@ |
|||||
package com.ruoyi.framework.aspectj.lang.enums; |
package com.ruoyi.common.enums; |
||||
|
|
||||
/** |
/** |
||||
* 业务操作类型 |
* 业务操作类型 |
@ -1,4 +1,4 @@ |
|||||
package com.ruoyi.framework.aspectj.lang.enums; |
package com.ruoyi.common.enums; |
||||
|
|
||||
/** |
/** |
||||
* 数据源 |
* 数据源 |
@ -1,4 +1,4 @@ |
|||||
package com.ruoyi.framework.aspectj.lang.enums; |
package com.ruoyi.common.enums; |
||||
|
|
||||
/** |
/** |
||||
* 操作人类别 |
* 操作人类别 |
@ -1,34 +1,34 @@ |
|||||
package com.ruoyi.common.exception.job; |
package com.ruoyi.common.exception.job; |
||||
|
|
||||
/** |
/** |
||||
* 计划策略异常 |
* 计划策略异常 |
||||
* |
* |
||||
* @author ruoyi |
* @author ruoyi |
||||
*/ |
*/ |
||||
public class TaskException extends Exception |
public class TaskException extends Exception |
||||
{ |
{ |
||||
private static final long serialVersionUID = 1L; |
private static final long serialVersionUID = 1L; |
||||
|
|
||||
private Code code; |
private Code code; |
||||
|
|
||||
public TaskException(String msg, Code code) |
public TaskException(String msg, Code code) |
||||
{ |
{ |
||||
this(msg, code, null); |
this(msg, code, null); |
||||
} |
} |
||||
|
|
||||
public TaskException(String msg, Code code, Exception nestedEx) |
public TaskException(String msg, Code code, Exception nestedEx) |
||||
{ |
{ |
||||
super(msg, nestedEx); |
super(msg, nestedEx); |
||||
this.code = code; |
this.code = code; |
||||
} |
} |
||||
|
|
||||
public Code getCode() |
public Code getCode() |
||||
{ |
{ |
||||
return code; |
return code; |
||||
} |
} |
||||
|
|
||||
public enum Code |
public enum Code |
||||
{ |
{ |
||||
TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE |
TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE |
||||
} |
} |
||||
} |
} |
@ -1,52 +1,52 @@ |
|||||
package com.ruoyi.common.filter; |
package com.ruoyi.common.filter; |
||||
|
|
||||
import java.io.IOException; |
import java.io.IOException; |
||||
import javax.servlet.Filter; |
import javax.servlet.Filter; |
||||
import javax.servlet.FilterChain; |
import javax.servlet.FilterChain; |
||||
import javax.servlet.FilterConfig; |
import javax.servlet.FilterConfig; |
||||
import javax.servlet.ServletException; |
import javax.servlet.ServletException; |
||||
import javax.servlet.ServletRequest; |
import javax.servlet.ServletRequest; |
||||
import javax.servlet.ServletResponse; |
import javax.servlet.ServletResponse; |
||||
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletRequest; |
||||
import org.springframework.http.MediaType; |
import org.springframework.http.MediaType; |
||||
import com.ruoyi.common.utils.StringUtils; |
import com.ruoyi.common.utils.StringUtils; |
||||
|
|
||||
/** |
/** |
||||
* Repeatable 过滤器 |
* Repeatable 过滤器 |
||||
* |
* |
||||
* @author ruoyi |
* @author ruoyi |
||||
*/ |
*/ |
||||
public class RepeatableFilter implements Filter |
public class RepeatableFilter implements Filter |
||||
{ |
{ |
||||
@Override |
@Override |
||||
public void init(FilterConfig filterConfig) throws ServletException |
public void init(FilterConfig filterConfig) throws ServletException |
||||
{ |
{ |
||||
|
|
||||
} |
} |
||||
|
|
||||
@Override |
@Override |
||||
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) |
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) |
||||
throws IOException, ServletException |
throws IOException, ServletException |
||||
{ |
{ |
||||
ServletRequest requestWrapper = null; |
ServletRequest requestWrapper = null; |
||||
if (request instanceof HttpServletRequest && StringUtils.equalsAnyIgnoreCase(request.getContentType(), |
if (request instanceof HttpServletRequest && StringUtils.equalsAnyIgnoreCase(request.getContentType(), |
||||
MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_JSON_UTF8_VALUE)) |
MediaType.APPLICATION_JSON_VALUE, MediaType.APPLICATION_JSON_UTF8_VALUE)) |
||||
{ |
{ |
||||
requestWrapper = new RepeatedlyRequestWrapper((HttpServletRequest) request, response); |
requestWrapper = new RepeatedlyRequestWrapper((HttpServletRequest) request, response); |
||||
} |
} |
||||
if (null == requestWrapper) |
if (null == requestWrapper) |
||||
{ |
{ |
||||
chain.doFilter(request, response); |
chain.doFilter(request, response); |
||||
} |
} |
||||
else |
else |
||||
{ |
{ |
||||
chain.doFilter(requestWrapper, response); |
chain.doFilter(requestWrapper, response); |
||||
} |
} |
||||
} |
} |
||||
|
|
||||
@Override |
@Override |
||||
public void destroy() |
public void destroy() |
||||
{ |
{ |
||||
|
|
||||
} |
} |
||||
} |
} |
@ -1,72 +1,72 @@ |
|||||
package com.ruoyi.common.filter; |
package com.ruoyi.common.filter; |
||||
|
|
||||
import java.io.BufferedReader; |
import java.io.BufferedReader; |
||||
import java.io.ByteArrayInputStream; |
import java.io.ByteArrayInputStream; |
||||
import java.io.IOException; |
import java.io.IOException; |
||||
import java.io.InputStreamReader; |
import java.io.InputStreamReader; |
||||
import javax.servlet.ReadListener; |
import javax.servlet.ReadListener; |
||||
import javax.servlet.ServletInputStream; |
import javax.servlet.ServletInputStream; |
||||
import javax.servlet.ServletResponse; |
import javax.servlet.ServletResponse; |
||||
import javax.servlet.http.HttpServletRequest; |
import javax.servlet.http.HttpServletRequest; |
||||
import javax.servlet.http.HttpServletRequestWrapper; |
import javax.servlet.http.HttpServletRequestWrapper; |
||||
import com.ruoyi.common.utils.http.HttpHelper; |
import com.ruoyi.common.utils.http.HttpHelper; |
||||
|
|
||||
/** |
/** |
||||
* 构建可重复读取inputStream的request |
* 构建可重复读取inputStream的request |
||||
* |
* |
||||
* @author ruoyi |
* @author ruoyi |
||||
*/ |
*/ |
||||
public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper |
public class RepeatedlyRequestWrapper extends HttpServletRequestWrapper |
||||
{ |
{ |
||||
private final byte[] body; |
private final byte[] body; |
||||
|
|
||||
public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException |
public RepeatedlyRequestWrapper(HttpServletRequest request, ServletResponse response) throws IOException |
||||
{ |
{ |
||||
super(request); |
super(request); |
||||
request.setCharacterEncoding("UTF-8"); |
request.setCharacterEncoding("UTF-8"); |
||||
response.setCharacterEncoding("UTF-8"); |
response.setCharacterEncoding("UTF-8"); |
||||
|
|
||||
body = HttpHelper.getBodyString(request).getBytes("UTF-8"); |
body = HttpHelper.getBodyString(request).getBytes("UTF-8"); |
||||
} |
} |
||||
|
|
||||
@Override |
@Override |
||||
public BufferedReader getReader() throws IOException |
public BufferedReader getReader() throws IOException |
||||
{ |
{ |
||||
return new BufferedReader(new InputStreamReader(getInputStream())); |
return new BufferedReader(new InputStreamReader(getInputStream())); |
||||
} |
} |
||||
|
|
||||
@Override |
@Override |
||||
public ServletInputStream getInputStream() throws IOException |
public ServletInputStream getInputStream() throws IOException |
||||
{ |
{ |
||||
|
|
||||
final ByteArrayInputStream bais = new ByteArrayInputStream(body); |
final ByteArrayInputStream bais = new ByteArrayInputStream(body); |
||||
|
|
||||
return new ServletInputStream() |
return new ServletInputStream() |
||||
{ |
{ |
||||
|
|
||||
@Override |
@Override |
||||
public int read() throws IOException |
public int read() throws IOException |
||||
{ |
{ |
||||
return bais.read(); |
return bais.read(); |
||||
} |
} |
||||
|
|
||||
@Override |
@Override |
||||
public boolean isFinished() |
public boolean isFinished() |
||||
{ |
{ |
||||
return false; |
return false; |
||||
} |
} |
||||
|
|
||||
@Override |
@Override |
||||
public boolean isReady() |
public boolean isReady() |
||||
{ |
{ |
||||
return false; |
return false; |
||||
} |
} |
||||
|
|
||||
@Override |
@Override |
||||
public void setReadListener(ReadListener readListener) |
public void setReadListener(ReadListener readListener) |
||||
{ |
{ |
||||
|
|
||||
} |
} |
||||
}; |
}; |
||||
} |
} |
||||
} |
} |
@ -1,40 +1,40 @@ |
|||||
package com.ruoyi.common.utils; |
package com.ruoyi.common.utils; |
||||
|
|
||||
import java.io.PrintWriter; |
import java.io.PrintWriter; |
||||
import java.io.StringWriter; |
import java.io.StringWriter; |
||||
import org.apache.commons.lang3.exception.ExceptionUtils; |
import org.apache.commons.lang3.exception.ExceptionUtils; |
||||
|
|
||||
/** |
/** |
||||
* 错误信息处理类。 |
* 错误信息处理类。 |
||||
* |
* |
||||
* @author ruoyi |
* @author ruoyi |
||||
*/ |
*/ |
||||
public class ExceptionUtil |
public class ExceptionUtil |
||||
{ |
{ |
||||
/** |
/** |
||||
* 获取exception的详细错误信息。 |
* 获取exception的详细错误信息。 |
||||
*/ |
*/ |
||||
public static String getExceptionMessage(Throwable e) |
public static String getExceptionMessage(Throwable e) |
||||
{ |
{ |
||||
StringWriter sw = new StringWriter(); |
StringWriter sw = new StringWriter(); |
||||
e.printStackTrace(new PrintWriter(sw, true)); |
e.printStackTrace(new PrintWriter(sw, true)); |
||||
String str = sw.toString(); |
String str = sw.toString(); |
||||
return str; |
return str; |
||||
} |
} |
||||
|
|
||||
public static String getRootErrorMseeage(Exception e) |
public static String getRootErrorMseeage(Exception e) |
||||
{ |
{ |
||||
Throwable root = ExceptionUtils.getRootCause(e); |
Throwable root = ExceptionUtils.getRootCause(e); |
||||
root = (root == null ? e : root); |
root = (root == null ? e : root); |
||||
if (root == null) |
if (root == null) |
||||
{ |
{ |
||||
return ""; |
return ""; |
||||
} |
} |
||||
String msg = root.getMessage(); |
String msg = root.getMessage(); |
||||
if (msg == null) |
if (msg == null) |
||||
{ |
{ |
||||
return "null"; |
return "null"; |
||||
} |
} |
||||
return StringUtils.defaultString(msg); |
return StringUtils.defaultString(msg); |
||||
} |
} |
||||
} |
} |
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue