重构中

This commit is contained in:
zhujj 2018-12-05 18:23:31 +08:00
parent 4dd5f7df3d
commit e12e46c025
46 changed files with 766 additions and 757 deletions

View File

@ -46,7 +46,8 @@
<module>ruoyi-quartz</module> <module>ruoyi-quartz</module>
<module>ruoyi-generator</module> <module>ruoyi-generator</module>
<module>ruoyi-common</module> <module>ruoyi-common</module>
</modules> <module>ruoyi-exam</module>
</modules>
<packaging>pom</packaging> <packaging>pom</packaging>

View File

@ -39,13 +39,6 @@
<version>${swagger.version}</version> <version>${swagger.version}</version>
</dependency> </dependency>
<!-- 核心模块-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<!-- 代码生成--> <!-- 代码生成-->
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>

View File

@ -15,7 +15,7 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.enums.OnlineStatus; import com.ruoyi.common.enums.OnlineStatus;
import com.ruoyi.framework.shiro.session.OnlineSession; import com.ruoyi.framework.shiro.session.OnlineSession;
import com.ruoyi.framework.shiro.session.OnlineSessionDAO; import com.ruoyi.framework.shiro.session.OnlineSessionDAO;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.system.domain.SysUserOnline; import com.ruoyi.system.domain.SysUserOnline;
import com.ruoyi.system.service.impl.SysUserOnlineServiceImpl; import com.ruoyi.system.service.impl.SysUserOnlineServiceImpl;

View File

@ -14,7 +14,7 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.ExcelUtil; import com.ruoyi.common.utils.ExcelUtil;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.system.domain.SysConfig; import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysConfigService;

View File

@ -15,7 +15,7 @@ import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.system.domain.SysDept; import com.ruoyi.system.domain.SysDept;
import com.ruoyi.system.domain.SysRole; import com.ruoyi.system.domain.SysRole;
import com.ruoyi.system.service.ISysDeptService; import com.ruoyi.system.service.ISysDeptService;

View File

@ -14,7 +14,7 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.ExcelUtil; import com.ruoyi.common.utils.ExcelUtil;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.system.domain.SysDictData; import com.ruoyi.system.domain.SysDictData;
import com.ruoyi.system.service.ISysDictDataService; import com.ruoyi.system.service.ISysDictDataService;

View File

@ -14,7 +14,7 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.ExcelUtil; import com.ruoyi.common.utils.ExcelUtil;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.system.domain.SysDictType; import com.ruoyi.system.domain.SysDictType;
import com.ruoyi.system.service.ISysDictTypeService; import com.ruoyi.system.service.ISysDictTypeService;

View File

@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseBody;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.util.ServletUtils; import com.ruoyi.framework.web.util.ServletUtils;
import com.ruoyi.framework.web.base.BaseController; import com.ruoyi.framework.web.base.BaseController;
/** /**

View File

@ -14,7 +14,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.system.domain.SysMenu; import com.ruoyi.system.domain.SysMenu;
import com.ruoyi.system.domain.SysRole; import com.ruoyi.system.domain.SysRole;
import com.ruoyi.system.service.ISysMenuService; import com.ruoyi.system.service.ISysMenuService;

View File

@ -13,7 +13,7 @@ import org.springframework.web.bind.annotation.ResponseBody;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.system.domain.SysNotice; import com.ruoyi.system.domain.SysNotice;
import com.ruoyi.system.service.ISysNoticeService; import com.ruoyi.system.service.ISysNoticeService;

View File

@ -14,7 +14,7 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.ExcelUtil; import com.ruoyi.common.utils.ExcelUtil;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.system.domain.SysPost; import com.ruoyi.system.domain.SysPost;
import com.ruoyi.system.service.ISysPostService; import com.ruoyi.system.service.ISysPostService;

View File

@ -18,8 +18,8 @@ import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.config.Global; import com.ruoyi.common.config.Global;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.framework.shiro.service.SysPasswordService; import com.ruoyi.framework.shiro.service.SysPasswordService;
import com.ruoyi.framework.util.FileUploadUtils; import com.ruoyi.framework.web.util.FileUploadUtils;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.SysUser;
import com.ruoyi.system.service.ISysDictDataService; import com.ruoyi.system.service.ISysDictDataService;
import com.ruoyi.system.service.ISysUserService; import com.ruoyi.system.service.ISysUserService;

View File

@ -15,7 +15,7 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.ExcelUtil; import com.ruoyi.common.utils.ExcelUtil;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.system.domain.SysRole; import com.ruoyi.system.domain.SysRole;
import com.ruoyi.system.service.ISysRoleService; import com.ruoyi.system.service.ISysRoleService;

View File

@ -17,7 +17,7 @@ import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.ExcelUtil; import com.ruoyi.common.utils.ExcelUtil;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.shiro.service.SysPasswordService; import com.ruoyi.framework.shiro.service.SysPasswordService;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.SysUser;
import com.ruoyi.system.service.ISysPostService; import com.ruoyi.system.service.ISysPostService;

21
ruoyi-exam/pom.xml Normal file
View File

@ -0,0 +1,21 @@
<?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</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ruoyi-exam</artifactId>
<dependencies>
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId>
<version>3.0</version>
</dependency>
</dependencies>
</project>

View File

@ -11,7 +11,7 @@ import org.springframework.stereotype.Component;
import com.ruoyi.common.annotation.DataScope; import com.ruoyi.common.annotation.DataScope;
import com.ruoyi.common.base.BaseEntity; import com.ruoyi.common.base.BaseEntity;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.system.domain.SysRole; import com.ruoyi.system.domain.SysRole;
import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.SysUser;

View File

@ -18,8 +18,8 @@ import com.ruoyi.common.json.JSON;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.manager.AsyncManager; import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory; import com.ruoyi.framework.manager.factory.AsyncFactory;
import com.ruoyi.framework.util.ServletUtils; import com.ruoyi.framework.web.util.ServletUtils;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.system.domain.SysOperLog; import com.ruoyi.system.domain.SysOperLog;
import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.SysUser;

View File

@ -6,10 +6,10 @@ import org.slf4j.LoggerFactory;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.utils.AddressUtils; import com.ruoyi.common.utils.AddressUtils;
import com.ruoyi.framework.shiro.session.OnlineSession; import com.ruoyi.framework.shiro.session.OnlineSession;
import com.ruoyi.framework.util.LogUtils; import com.ruoyi.framework.web.util.LogUtils;
import com.ruoyi.framework.util.ServletUtils; import com.ruoyi.framework.web.util.ServletUtils;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.util.SpringUtils; import com.ruoyi.framework.web.util.SpringUtils;
import com.ruoyi.system.domain.SysLogininfor; import com.ruoyi.system.domain.SysLogininfor;
import com.ruoyi.system.domain.SysOperLog; import com.ruoyi.system.domain.SysOperLog;
import com.ruoyi.system.domain.SysUserOnline; import com.ruoyi.system.domain.SysUserOnline;

View File

@ -20,7 +20,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import com.ruoyi.framework.shiro.service.SysLoginService; import com.ruoyi.framework.shiro.service.SysLoginService;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.exception.user.CaptchaException; import com.ruoyi.framework.web.exception.user.CaptchaException;
import com.ruoyi.framework.web.exception.user.RoleBlockedException; import com.ruoyi.framework.web.exception.user.RoleBlockedException;
import com.ruoyi.framework.web.exception.user.UserBlockedException; import com.ruoyi.framework.web.exception.user.UserBlockedException;

View File

@ -10,9 +10,9 @@ import com.ruoyi.common.enums.UserStatus;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.framework.manager.AsyncManager; import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory; import com.ruoyi.framework.manager.factory.AsyncFactory;
import com.ruoyi.framework.util.MessageUtils; import com.ruoyi.framework.web.util.MessageUtils;
import com.ruoyi.framework.util.ServletUtils; import com.ruoyi.framework.web.util.ServletUtils;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.exception.user.CaptchaException; import com.ruoyi.framework.web.exception.user.CaptchaException;
import com.ruoyi.framework.web.exception.user.UserBlockedException; import com.ruoyi.framework.web.exception.user.UserBlockedException;
import com.ruoyi.framework.web.exception.user.UserDeleteException; import com.ruoyi.framework.web.exception.user.UserDeleteException;

View File

@ -11,7 +11,7 @@ import org.springframework.stereotype.Component;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.framework.manager.AsyncManager; import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory; import com.ruoyi.framework.manager.factory.AsyncFactory;
import com.ruoyi.framework.util.MessageUtils; import com.ruoyi.framework.web.util.MessageUtils;
import com.ruoyi.framework.web.exception.user.UserPasswordNotMatchException; import com.ruoyi.framework.web.exception.user.UserPasswordNotMatchException;
import com.ruoyi.framework.web.exception.user.UserPasswordRetryLimitExceedException; import com.ruoyi.framework.web.exception.user.UserPasswordRetryLimitExceedException;
import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.SysUser;

View File

@ -7,7 +7,7 @@ import org.apache.shiro.session.mgt.SessionFactory;
import org.apache.shiro.web.session.mgt.WebSessionContext; import org.apache.shiro.web.session.mgt.WebSessionContext;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import com.ruoyi.common.utils.IpUtils; import com.ruoyi.common.utils.IpUtils;
import com.ruoyi.framework.util.ServletUtils; import com.ruoyi.framework.web.util.ServletUtils;
import eu.bitwalker.useragentutils.UserAgent; import eu.bitwalker.useragentutils.UserAgent;
/** /**

View File

@ -12,8 +12,8 @@ import com.ruoyi.common.constant.Constants;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.manager.AsyncManager; import com.ruoyi.framework.manager.AsyncManager;
import com.ruoyi.framework.manager.factory.AsyncFactory; import com.ruoyi.framework.manager.factory.AsyncFactory;
import com.ruoyi.framework.util.MessageUtils; import com.ruoyi.framework.web.util.MessageUtils;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
/** /**
* 退出过滤器 * 退出过滤器

View File

@ -7,7 +7,7 @@ import org.apache.shiro.web.filter.AccessControlFilter;
import com.google.code.kaptcha.Constants; import com.google.code.kaptcha.Constants;
import com.ruoyi.common.constant.ShiroConstants; import com.ruoyi.common.constant.ShiroConstants;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
/** /**
* 验证码过滤器 * 验证码过滤器

View File

@ -13,7 +13,7 @@ import com.ruoyi.common.constant.ShiroConstants;
import com.ruoyi.common.enums.OnlineStatus; import com.ruoyi.common.enums.OnlineStatus;
import com.ruoyi.framework.shiro.session.OnlineSession; import com.ruoyi.framework.shiro.session.OnlineSession;
import com.ruoyi.framework.shiro.session.OnlineSessionDAO; import com.ruoyi.framework.shiro.session.OnlineSessionDAO;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.SysUser;
/** /**

View File

@ -15,7 +15,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.ruoyi.common.constant.ShiroConstants; import com.ruoyi.common.constant.ShiroConstants;
import com.ruoyi.framework.shiro.session.OnlineSession; import com.ruoyi.framework.shiro.session.OnlineSession;
import com.ruoyi.framework.util.SpringUtils; import com.ruoyi.framework.web.util.SpringUtils;
import com.ruoyi.system.domain.SysUserOnline; import com.ruoyi.system.domain.SysUserOnline;
import com.ruoyi.system.service.ISysUserOnlineService; import com.ruoyi.system.service.ISysUserOnlineService;

View File

@ -2,7 +2,7 @@ package com.ruoyi.framework.web.base;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.util.EntityUtils; import com.ruoyi.framework.web.util.EntityUtils;
import com.ruoyi.framework.web.page.PageDomain; import com.ruoyi.framework.web.page.PageDomain;
import com.ruoyi.framework.web.page.TableSupport; import com.ruoyi.framework.web.page.TableSupport;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -4,7 +4,7 @@ import com.github.pagehelper.PageInfo;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.SysUser;
import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.WebDataBinder;

View File

@ -8,7 +8,7 @@ import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.bind.annotation.RestControllerAdvice;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.exception.DemoModeException; import com.ruoyi.common.exception.DemoModeException;
import com.ruoyi.framework.util.PermissionUtils; import com.ruoyi.framework.web.util.PermissionUtils;
/** /**
* 自定义异常处理器 * 自定义异常处理器

View File

@ -1,7 +1,7 @@
package com.ruoyi.framework.web.exception.base; package com.ruoyi.framework.web.exception.base;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.util.MessageUtils; import com.ruoyi.framework.web.util.MessageUtils;
/** /**
* 基础异常 * 基础异常

View File

@ -1,7 +1,7 @@
package com.ruoyi.framework.web.page; package com.ruoyi.framework.web.page;
import com.ruoyi.common.constant.Constants; import com.ruoyi.common.constant.Constants;
import com.ruoyi.framework.util.ServletUtils; import com.ruoyi.framework.web.util.ServletUtils;
/** /**
* 表格数据处理 * 表格数据处理

View File

@ -1,161 +1,161 @@
package com.ruoyi.framework.util; package com.ruoyi.framework.web.util;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import org.apache.tomcat.util.http.fileupload.FileUploadBase.FileSizeLimitExceededException; import org.apache.tomcat.util.http.fileupload.FileUploadBase.FileSizeLimitExceededException;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import com.ruoyi.common.config.Global; import com.ruoyi.common.config.Global;
import com.ruoyi.common.exception.file.FileNameLengthLimitExceededException; import com.ruoyi.common.exception.file.FileNameLengthLimitExceededException;
import com.ruoyi.common.utils.Md5Utils; import com.ruoyi.common.utils.Md5Utils;
/** /**
* 文件上传工具类 * 文件上传工具类
* *
* @author ruoyi * @author ruoyi
*/ */
public class FileUploadUtils public class FileUploadUtils
{ {
/** /**
* 默认大小 50M * 默认大小 50M
*/ */
public static final long DEFAULT_MAX_SIZE = 52428800; public static final long DEFAULT_MAX_SIZE = 52428800;
/** /**
* 默认上传的地址 * 默认上传的地址
*/ */
private static String defaultBaseDir = Global.getProfile(); private static String defaultBaseDir = Global.getProfile();
/** /**
* 默认的文件名最大长度 * 默认的文件名最大长度
*/ */
public static final int DEFAULT_FILE_NAME_LENGTH = 200; public static final int DEFAULT_FILE_NAME_LENGTH = 200;
/** /**
* 默认文件类型jpg * 默认文件类型jpg
*/ */
public static final String IMAGE_JPG_EXTENSION = ".jpg"; public static final String IMAGE_JPG_EXTENSION = ".jpg";
private static int counter = 0; private static int counter = 0;
public static void setDefaultBaseDir(String defaultBaseDir) public static void setDefaultBaseDir(String defaultBaseDir)
{ {
FileUploadUtils.defaultBaseDir = defaultBaseDir; FileUploadUtils.defaultBaseDir = defaultBaseDir;
} }
public static String getDefaultBaseDir() public static String getDefaultBaseDir()
{ {
return defaultBaseDir; return defaultBaseDir;
} }
/** /**
* 以默认配置进行文件上传 * 以默认配置进行文件上传
* *
* @param file 上传的文件 * @param file 上传的文件
* @return 文件名称 * @return 文件名称
* @throws Exception * @throws Exception
*/ */
public static final String upload(MultipartFile file) throws IOException public static final String upload(MultipartFile file) throws IOException
{ {
try try
{ {
return upload(getDefaultBaseDir(), file, FileUploadUtils.IMAGE_JPG_EXTENSION); return upload(getDefaultBaseDir(), file, FileUploadUtils.IMAGE_JPG_EXTENSION);
} }
catch (Exception e) catch (Exception e)
{ {
throw new IOException(e); throw new IOException(e);
} }
} }
/** /**
* 根据文件路径上传 * 根据文件路径上传
* *
* @param baseDir 相对应用的基目录 * @param baseDir 相对应用的基目录
* @param file 上传的文件 * @param file 上传的文件
* @return 文件名称 * @return 文件名称
* @throws IOException * @throws IOException
*/ */
public static final String upload(String baseDir, MultipartFile file) throws IOException public static final String upload(String baseDir, MultipartFile file) throws IOException
{ {
try try
{ {
return upload(baseDir, file, FileUploadUtils.IMAGE_JPG_EXTENSION); return upload(baseDir, file, FileUploadUtils.IMAGE_JPG_EXTENSION);
} }
catch (Exception e) catch (Exception e)
{ {
throw new IOException(e); throw new IOException(e);
} }
} }
/** /**
* 文件上传 * 文件上传
* *
* @param baseDir 相对应用的基目录 * @param baseDir 相对应用的基目录
* @param file 上传的文件 * @param file 上传的文件
* @param needDatePathAndRandomName 是否需要日期目录和随机文件名前缀 * @param needDatePathAndRandomName 是否需要日期目录和随机文件名前缀
* @param extension 上传文件类型 * @param extension 上传文件类型
* @return 返回上传成功的文件名 * @return 返回上传成功的文件名
* @throws FileSizeLimitExceededException 如果超出最大大小 * @throws FileSizeLimitExceededException 如果超出最大大小
* @throws FileNameLengthLimitExceededException 文件名太长 * @throws FileNameLengthLimitExceededException 文件名太长
* @throws IOException 比如读写文件出错时 * @throws IOException 比如读写文件出错时
*/ */
public static final String upload(String baseDir, MultipartFile file, String extension) public static final String upload(String baseDir, MultipartFile file, String extension)
throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException throws FileSizeLimitExceededException, IOException, FileNameLengthLimitExceededException
{ {
int fileNamelength = file.getOriginalFilename().length(); int fileNamelength = file.getOriginalFilename().length();
if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH) if (fileNamelength > FileUploadUtils.DEFAULT_FILE_NAME_LENGTH)
{ {
throw new FileNameLengthLimitExceededException(file.getOriginalFilename(), fileNamelength, throw new FileNameLengthLimitExceededException(file.getOriginalFilename(), fileNamelength,
FileUploadUtils.DEFAULT_FILE_NAME_LENGTH); FileUploadUtils.DEFAULT_FILE_NAME_LENGTH);
} }
assertAllowed(file); assertAllowed(file);
String fileName = encodingFilename(file.getOriginalFilename(), extension); String fileName = encodingFilename(file.getOriginalFilename(), extension);
File desc = getAbsoluteFile(baseDir, baseDir + fileName); File desc = getAbsoluteFile(baseDir, baseDir + fileName);
file.transferTo(desc); file.transferTo(desc);
return fileName; return fileName;
} }
private static final File getAbsoluteFile(String uploadDir, String filename) throws IOException private static final File getAbsoluteFile(String uploadDir, String filename) throws IOException
{ {
File desc = new File(File.separator + filename); File desc = new File(File.separator + filename);
if (!desc.getParentFile().exists()) if (!desc.getParentFile().exists())
{ {
desc.getParentFile().mkdirs(); desc.getParentFile().mkdirs();
} }
if (!desc.exists()) if (!desc.exists())
{ {
desc.createNewFile(); desc.createNewFile();
} }
return desc; return desc;
} }
/** /**
* 编码文件名 * 编码文件名
*/ */
private static final String encodingFilename(String filename, String extension) private static final String encodingFilename(String filename, String extension)
{ {
filename = filename.replace("_", " "); filename = filename.replace("_", " ");
filename = Md5Utils.hash(filename + System.nanoTime() + counter++) + extension; filename = Md5Utils.hash(filename + System.nanoTime() + counter++) + extension;
return filename; return filename;
} }
/** /**
* 文件大小校验 * 文件大小校验
* *
* @param file 上传的文件 * @param file 上传的文件
* @return * @return
* @throws FileSizeLimitExceededException 如果超出最大大小 * @throws FileSizeLimitExceededException 如果超出最大大小
*/ */
public static final void assertAllowed(MultipartFile file) throws FileSizeLimitExceededException public static final void assertAllowed(MultipartFile file) throws FileSizeLimitExceededException
{ {
long size = file.getSize(); long size = file.getSize();
if (DEFAULT_MAX_SIZE != -1 && size > DEFAULT_MAX_SIZE) if (DEFAULT_MAX_SIZE != -1 && size > DEFAULT_MAX_SIZE)
{ {
throw new FileSizeLimitExceededException("not allowed upload upload", size, DEFAULT_MAX_SIZE); throw new FileSizeLimitExceededException("not allowed upload upload", size, DEFAULT_MAX_SIZE);
} }
} }
} }

View File

@ -1,136 +1,136 @@
package com.ruoyi.framework.util; package com.ruoyi.framework.web.util;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.Map; import java.util.Map;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.ruoyi.common.json.JSON; import com.ruoyi.common.json.JSON;
import com.ruoyi.common.utils.IpUtils; import com.ruoyi.common.utils.IpUtils;
/** /**
* 处理并记录日志文件 * 处理并记录日志文件
* *
* @author ruoyi * @author ruoyi
*/ */
public class LogUtils public class LogUtils
{ {
public static final Logger ERROR_LOG = LoggerFactory.getLogger("sys-error"); public static final Logger ERROR_LOG = LoggerFactory.getLogger("sys-error");
public static final Logger ACCESS_LOG = LoggerFactory.getLogger("sys-access"); public static final Logger ACCESS_LOG = LoggerFactory.getLogger("sys-access");
/** /**
* 记录访问日志 [username][jsessionid][ip][accept][UserAgent][url][params][Referer] * 记录访问日志 [username][jsessionid][ip][accept][UserAgent][url][params][Referer]
* *
* @param request * @param request
* @throws Exception * @throws Exception
*/ */
public static void logAccess(HttpServletRequest request) throws Exception public static void logAccess(HttpServletRequest request) throws Exception
{ {
String username = getUsername(); String username = getUsername();
String jsessionId = request.getRequestedSessionId(); String jsessionId = request.getRequestedSessionId();
String ip = IpUtils.getIpAddr(request); String ip = IpUtils.getIpAddr(request);
String accept = request.getHeader("accept"); String accept = request.getHeader("accept");
String userAgent = request.getHeader("User-Agent"); String userAgent = request.getHeader("User-Agent");
String url = request.getRequestURI(); String url = request.getRequestURI();
String params = getParams(request); String params = getParams(request);
StringBuilder s = new StringBuilder(); StringBuilder s = new StringBuilder();
s.append(getBlock(username)); s.append(getBlock(username));
s.append(getBlock(jsessionId)); s.append(getBlock(jsessionId));
s.append(getBlock(ip)); s.append(getBlock(ip));
s.append(getBlock(accept)); s.append(getBlock(accept));
s.append(getBlock(userAgent)); s.append(getBlock(userAgent));
s.append(getBlock(url)); s.append(getBlock(url));
s.append(getBlock(params)); s.append(getBlock(params));
s.append(getBlock(request.getHeader("Referer"))); s.append(getBlock(request.getHeader("Referer")));
getAccessLog().info(s.toString()); getAccessLog().info(s.toString());
} }
/** /**
* 记录异常错误 格式 [exception] * 记录异常错误 格式 [exception]
* *
* @param message * @param message
* @param e * @param e
*/ */
public static void logError(String message, Throwable e) public static void logError(String message, Throwable e)
{ {
String username = getUsername(); String username = getUsername();
StringBuilder s = new StringBuilder(); StringBuilder s = new StringBuilder();
s.append(getBlock("exception")); s.append(getBlock("exception"));
s.append(getBlock(username)); s.append(getBlock(username));
s.append(getBlock(message)); s.append(getBlock(message));
ERROR_LOG.error(s.toString(), e); ERROR_LOG.error(s.toString(), e);
} }
/** /**
* 记录页面错误 错误日志记录 [page/eception][username][statusCode][errorMessage][servletName][uri][exceptionName][ip][exception] * 记录页面错误 错误日志记录 [page/eception][username][statusCode][errorMessage][servletName][uri][exceptionName][ip][exception]
* *
* @param request * @param request
*/ */
public static void logPageError(HttpServletRequest request) public static void logPageError(HttpServletRequest request)
{ {
String username = getUsername(); String username = getUsername();
Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code"); Integer statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
String message = (String) request.getAttribute("javax.servlet.error.message"); String message = (String) request.getAttribute("javax.servlet.error.message");
String uri = (String) request.getAttribute("javax.servlet.error.request_uri"); String uri = (String) request.getAttribute("javax.servlet.error.request_uri");
Throwable t = (Throwable) request.getAttribute("javax.servlet.error.exception"); Throwable t = (Throwable) request.getAttribute("javax.servlet.error.exception");
if (statusCode == null) if (statusCode == null)
{ {
statusCode = 0; statusCode = 0;
} }
StringBuilder s = new StringBuilder(); StringBuilder s = new StringBuilder();
s.append(getBlock(t == null ? "page" : "exception")); s.append(getBlock(t == null ? "page" : "exception"));
s.append(getBlock(username)); s.append(getBlock(username));
s.append(getBlock(statusCode)); s.append(getBlock(statusCode));
s.append(getBlock(message)); s.append(getBlock(message));
s.append(getBlock(IpUtils.getIpAddr(request))); s.append(getBlock(IpUtils.getIpAddr(request)));
s.append(getBlock(uri)); s.append(getBlock(uri));
s.append(getBlock(request.getHeader("Referer"))); s.append(getBlock(request.getHeader("Referer")));
StringWriter sw = new StringWriter(); StringWriter sw = new StringWriter();
while (t != null) while (t != null)
{ {
t.printStackTrace(new PrintWriter(sw)); t.printStackTrace(new PrintWriter(sw));
t = t.getCause(); t = t.getCause();
} }
s.append(getBlock(sw.toString())); s.append(getBlock(sw.toString()));
getErrorLog().error(s.toString()); getErrorLog().error(s.toString());
} }
public static String getBlock(Object msg) public static String getBlock(Object msg)
{ {
if (msg == null) if (msg == null)
{ {
msg = ""; msg = "";
} }
return "[" + msg.toString() + "]"; return "[" + msg.toString() + "]";
} }
protected static String getParams(HttpServletRequest request) throws Exception protected static String getParams(HttpServletRequest request) throws Exception
{ {
Map<String, String[]> params = request.getParameterMap(); Map<String, String[]> params = request.getParameterMap();
return JSON.marshal(params); return JSON.marshal(params);
} }
protected static String getUsername() protected static String getUsername()
{ {
return (String) SecurityUtils.getSubject().getPrincipal(); return (String) SecurityUtils.getSubject().getPrincipal();
} }
public static Logger getAccessLog() public static Logger getAccessLog()
{ {
return ACCESS_LOG; return ACCESS_LOG;
} }
public static Logger getErrorLog() public static Logger getErrorLog()
{ {
return ERROR_LOG; return ERROR_LOG;
} }
} }

View File

@ -1,24 +1,24 @@
package com.ruoyi.framework.util; package com.ruoyi.framework.web.util;
import org.springframework.context.MessageSource; import org.springframework.context.MessageSource;
/** /**
* 获取i18n资源文件 * 获取i18n资源文件
* *
* @author ruoyi * @author ruoyi
*/ */
public class MessageUtils public class MessageUtils
{ {
/** /**
* 根据消息键和参数 获取消息 委托给spring messageSource * 根据消息键和参数 获取消息 委托给spring messageSource
* *
* @param code 消息键 * @param code 消息键
* @param args 参数 * @param args 参数
* @return * @return
*/ */
public static String message(String code, Object... args) public static String message(String code, Object... args)
{ {
MessageSource messageSource = SpringUtils.getBean(MessageSource.class); MessageSource messageSource = SpringUtils.getBean(MessageSource.class);
return messageSource.getMessage(code, args, null); return messageSource.getMessage(code, args, null);
} }
} }

View File

@ -1,46 +1,46 @@
package com.ruoyi.framework.util; package com.ruoyi.framework.web.util;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import com.ruoyi.common.constant.PermissionConstants; import com.ruoyi.common.constant.PermissionConstants;
/** /**
* permission 工具类 * permission 工具类
* *
* @author ruoyi * @author ruoyi
*/ */
public class PermissionUtils public class PermissionUtils
{ {
/** /**
* 权限错误消息提醒 * 权限错误消息提醒
* *
* @param errorMsg 错误信息 * @param errorMsg 错误信息
* @return * @return
*/ */
public static String getMsg(String permissionsStr) public static String getMsg(String permissionsStr)
{ {
String permission = StringUtils.substringBetween(permissionsStr, "[", "]"); String permission = StringUtils.substringBetween(permissionsStr, "[", "]");
String msg = MessageUtils.message("no.view.permission", permission); String msg = MessageUtils.message("no.view.permission", permission);
if (StringUtils.endsWithIgnoreCase(permission, PermissionConstants.ADD_PERMISSION)) if (StringUtils.endsWithIgnoreCase(permission, PermissionConstants.ADD_PERMISSION))
{ {
msg = MessageUtils.message("no.create.permission", permission); msg = MessageUtils.message("no.create.permission", permission);
} }
else if (StringUtils.endsWithIgnoreCase(permission, PermissionConstants.EDIT_PERMISSION)) else if (StringUtils.endsWithIgnoreCase(permission, PermissionConstants.EDIT_PERMISSION))
{ {
msg = MessageUtils.message("no.update.permission", permission); msg = MessageUtils.message("no.update.permission", permission);
} }
else if (StringUtils.endsWithIgnoreCase(permission, PermissionConstants.REMOVE_PERMISSION)) else if (StringUtils.endsWithIgnoreCase(permission, PermissionConstants.REMOVE_PERMISSION))
{ {
msg = MessageUtils.message("no.delete.permission", permission); msg = MessageUtils.message("no.delete.permission", permission);
} }
else if (StringUtils.endsWithIgnoreCase(permission, PermissionConstants.EXPORT_PERMISSION)) else if (StringUtils.endsWithIgnoreCase(permission, PermissionConstants.EXPORT_PERMISSION))
{ {
msg = MessageUtils.message("no.export.permission", permission); msg = MessageUtils.message("no.export.permission", permission);
} }
else if (StringUtils.endsWithAny(permission, else if (StringUtils.endsWithAny(permission,
new String[] { PermissionConstants.VIEW_PERMISSION, PermissionConstants.LIST_PERMISSION })) new String[] { PermissionConstants.VIEW_PERMISSION, PermissionConstants.LIST_PERMISSION }))
{ {
msg = MessageUtils.message("no.view.permission", permission); msg = MessageUtils.message("no.view.permission", permission);
} }
return msg; return msg;
} }
} }

View File

@ -1,101 +1,101 @@
package com.ruoyi.framework.util; package com.ruoyi.framework.web.util;
import org.springframework.beans.BeansException; import org.springframework.beans.BeansException;
import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.beans.factory.config.BeanFactoryPostProcessor; import org.springframework.beans.factory.config.BeanFactoryPostProcessor;
import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.config.ConfigurableListableBeanFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
/** /**
* spring工具类 方便在非spring管理环境中获取bean * spring工具类 方便在非spring管理环境中获取bean
* *
* @author ruoyi * @author ruoyi
*/ */
@Component @Component
public final class SpringUtils implements BeanFactoryPostProcessor public final class SpringUtils implements BeanFactoryPostProcessor
{ {
/** Spring应用上下文环境 */ /** Spring应用上下文环境 */
private static ConfigurableListableBeanFactory beanFactory; private static ConfigurableListableBeanFactory beanFactory;
@Override @Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
{ {
SpringUtils.beanFactory = beanFactory; SpringUtils.beanFactory = beanFactory;
} }
/** /**
* 获取对象 * 获取对象
* *
* @param name * @param name
* @return Object 一个以所给名字注册的bean的实例 * @return Object 一个以所给名字注册的bean的实例
* @throws org.springframework.beans.BeansException * @throws org.springframework.beans.BeansException
* *
*/ */
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public static <T> T getBean(String name) throws BeansException public static <T> T getBean(String name) throws BeansException
{ {
return (T) beanFactory.getBean(name); return (T) beanFactory.getBean(name);
} }
/** /**
* 获取类型为requiredType的对象 * 获取类型为requiredType的对象
* *
* @param clz * @param clz
* @return * @return
* @throws org.springframework.beans.BeansException * @throws org.springframework.beans.BeansException
* *
*/ */
public static <T> T getBean(Class<T> clz) throws BeansException public static <T> T getBean(Class<T> clz) throws BeansException
{ {
T result = (T) beanFactory.getBean(clz); T result = (T) beanFactory.getBean(clz);
return result; return result;
} }
/** /**
* 如果BeanFactory包含一个与所给名称匹配的bean定义则返回true * 如果BeanFactory包含一个与所给名称匹配的bean定义则返回true
* *
* @param name * @param name
* @return boolean * @return boolean
*/ */
public static boolean containsBean(String name) public static boolean containsBean(String name)
{ {
return beanFactory.containsBean(name); return beanFactory.containsBean(name);
} }
/** /**
* 判断以给定名字注册的bean定义是一个singleton还是一个prototype 如果与给定名字相应的bean定义没有被找到将会抛出一个异常NoSuchBeanDefinitionException * 判断以给定名字注册的bean定义是一个singleton还是一个prototype 如果与给定名字相应的bean定义没有被找到将会抛出一个异常NoSuchBeanDefinitionException
* *
* @param name * @param name
* @return boolean * @return boolean
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
* *
*/ */
public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException public static boolean isSingleton(String name) throws NoSuchBeanDefinitionException
{ {
return beanFactory.isSingleton(name); return beanFactory.isSingleton(name);
} }
/** /**
* @param name * @param name
* @return Class 注册对象的类型 * @return Class 注册对象的类型
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
* *
*/ */
public static Class<?> getType(String name) throws NoSuchBeanDefinitionException public static Class<?> getType(String name) throws NoSuchBeanDefinitionException
{ {
return beanFactory.getType(name); return beanFactory.getType(name);
} }
/** /**
* 如果给定的bean名字在bean定义中有别名则返回这些别名 * 如果给定的bean名字在bean定义中有别名则返回这些别名
* *
* @param name * @param name
* @return * @return
* @throws org.springframework.beans.factory.NoSuchBeanDefinitionException * @throws org.springframework.beans.factory.NoSuchBeanDefinitionException
* *
*/ */
public static String[] getAliases(String name) throws NoSuchBeanDefinitionException public static String[] getAliases(String name) throws NoSuchBeanDefinitionException
{ {
return beanFactory.getAliases(name); return beanFactory.getAliases(name);
} }
} }

View File

@ -28,12 +28,6 @@
<version>${velocity.version}</version> <version>${velocity.version}</version>
</dependency> </dependency>
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
<version>${ruoyi.version}</version>
</dependency>
<dependency> <dependency>
<groupId>com.ruoyi</groupId> <groupId>com.ruoyi</groupId>
<artifactId>ruoyi-framework</artifactId> <artifactId>ruoyi-framework</artifactId>

View File

@ -14,7 +14,7 @@ import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.enums.BusinessType;
import com.ruoyi.common.utils.ExcelUtil; import com.ruoyi.common.utils.ExcelUtil;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.quartz.domain.SysJob; import com.ruoyi.quartz.domain.SysJob;
import com.ruoyi.quartz.service.ISysJobService; import com.ruoyi.quartz.service.ISysJobService;

View File

@ -2,7 +2,7 @@ package com.ruoyi.framework.web.base;
import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageHelper;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.util.EntityUtils; import com.ruoyi.framework.web.util.EntityUtils;
import com.ruoyi.framework.web.page.PageDomain; import com.ruoyi.framework.web.page.PageDomain;
import com.ruoyi.framework.web.page.TableSupport; import com.ruoyi.framework.web.page.TableSupport;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;

View File

@ -4,7 +4,7 @@ import com.github.pagehelper.PageInfo;
import com.ruoyi.common.base.AjaxResult; import com.ruoyi.common.base.AjaxResult;
import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.framework.util.ShiroUtils; import com.ruoyi.framework.web.util.ShiroUtils;
import com.ruoyi.framework.web.page.TableDataInfo; import com.ruoyi.framework.web.page.TableDataInfo;
import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.SysUser;
import org.springframework.web.bind.WebDataBinder; import org.springframework.web.bind.WebDataBinder;

View File

@ -1,4 +1,4 @@
package com.ruoyi.framework.util; package com.ruoyi.framework.web.util;
import java.lang.reflect.Method; import java.lang.reflect.Method;

View File

@ -1,139 +1,139 @@
package com.ruoyi.framework.util; package com.ruoyi.framework.web.util;
import com.ruoyi.common.support.Convert; import com.ruoyi.common.support.Convert;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import org.springframework.web.context.request.RequestAttributes; import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import java.io.IOException; import java.io.IOException;
/** /**
* 客户端工具类 * 客户端工具类
* *
* @author ruoyi * @author ruoyi
*/ */
public class ServletUtils public class ServletUtils
{ {
/** /**
* 获取String参数 * 获取String参数
*/ */
public static String getParameter(String name) public static String getParameter(String name)
{ {
return getRequest().getParameter(name); return getRequest().getParameter(name);
} }
/** /**
* 获取String参数 * 获取String参数
*/ */
public static String getParameter(String name, String defaultValue) public static String getParameter(String name, String defaultValue)
{ {
return Convert.toStr(getRequest().getParameter(name), defaultValue); return Convert.toStr(getRequest().getParameter(name), defaultValue);
} }
/** /**
* 获取Integer参数 * 获取Integer参数
*/ */
public static Integer getParameterToInt(String name) public static Integer getParameterToInt(String name)
{ {
return Convert.toInt(getRequest().getParameter(name)); return Convert.toInt(getRequest().getParameter(name));
} }
/** /**
* 获取Integer参数 * 获取Integer参数
*/ */
public static Integer getParameterToInt(String name, Integer defaultValue) public static Integer getParameterToInt(String name, Integer defaultValue)
{ {
return Convert.toInt(getRequest().getParameter(name), defaultValue); return Convert.toInt(getRequest().getParameter(name), defaultValue);
} }
/** /**
* 获取request * 获取request
*/ */
public static HttpServletRequest getRequest() public static HttpServletRequest getRequest()
{ {
return getRequestAttributes().getRequest(); return getRequestAttributes().getRequest();
} }
/** /**
* 获取response * 获取response
*/ */
public static HttpServletResponse getResponse() public static HttpServletResponse getResponse()
{ {
return getRequestAttributes().getResponse(); return getRequestAttributes().getResponse();
} }
/** /**
* 获取session * 获取session
*/ */
public static HttpSession getSession() public static HttpSession getSession()
{ {
return getRequest().getSession(); return getRequest().getSession();
} }
public static ServletRequestAttributes getRequestAttributes() public static ServletRequestAttributes getRequestAttributes()
{ {
RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
return (ServletRequestAttributes) attributes; return (ServletRequestAttributes) attributes;
} }
/** /**
* 将字符串渲染到客户端 * 将字符串渲染到客户端
* *
* @param response 渲染对象 * @param response 渲染对象
* @param string 待渲染的字符串 * @param string 待渲染的字符串
* @return null * @return null
*/ */
public static String renderString(HttpServletResponse response, String string) public static String renderString(HttpServletResponse response, String string)
{ {
try try
{ {
response.setContentType("application/json"); response.setContentType("application/json");
response.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");
response.getWriter().print(string); response.getWriter().print(string);
} }
catch (IOException e) catch (IOException e)
{ {
e.printStackTrace(); e.printStackTrace();
} }
return null; return null;
} }
/** /**
* 是否是Ajax异步请求 * 是否是Ajax异步请求
* *
* @param request * @param request
*/ */
public static boolean isAjaxRequest(HttpServletRequest request) public static boolean isAjaxRequest(HttpServletRequest request)
{ {
String accept = request.getHeader("accept"); String accept = request.getHeader("accept");
if (accept != null && accept.indexOf("application/json") != -1) if (accept != null && accept.indexOf("application/json") != -1)
{ {
return true; return true;
} }
String xRequestedWith = request.getHeader("X-Requested-With"); String xRequestedWith = request.getHeader("X-Requested-With");
if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1) if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1)
{ {
return true; return true;
} }
String uri = request.getRequestURI(); String uri = request.getRequestURI();
if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml")) if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml"))
{ {
return true; return true;
} }
String ajax = request.getParameter("__ajax"); String ajax = request.getParameter("__ajax");
if (StringUtils.inStringIgnoreCase(ajax, "json", "xml")) if (StringUtils.inStringIgnoreCase(ajax, "json", "xml"))
{ {
return true; return true;
} }
return false; return false;
} }
} }

View File

@ -1,96 +1,96 @@
package com.ruoyi.framework.util; package com.ruoyi.framework.web.util;
import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.bean.BeanUtils; import com.ruoyi.common.utils.bean.BeanUtils;
import com.ruoyi.framework.shiro.realm.UserRealm; import com.ruoyi.framework.shiro.realm.UserRealm;
import com.ruoyi.system.domain.SysUser; import com.ruoyi.system.domain.SysUser;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.apache.shiro.crypto.SecureRandomNumberGenerator; import org.apache.shiro.crypto.SecureRandomNumberGenerator;
import org.apache.shiro.mgt.RealmSecurityManager; import org.apache.shiro.mgt.RealmSecurityManager;
import org.apache.shiro.session.Session; import org.apache.shiro.session.Session;
import org.apache.shiro.subject.PrincipalCollection; import org.apache.shiro.subject.PrincipalCollection;
import org.apache.shiro.subject.SimplePrincipalCollection; import org.apache.shiro.subject.SimplePrincipalCollection;
import org.apache.shiro.subject.Subject; import org.apache.shiro.subject.Subject;
/** /**
* shiro 工具类 * shiro 工具类
* *
* @author ruoyi * @author ruoyi
*/ */
public class ShiroUtils public class ShiroUtils
{ {
public static Subject getSubjct() public static Subject getSubjct()
{ {
return SecurityUtils.getSubject(); return SecurityUtils.getSubject();
} }
public static Session getSession() public static Session getSession()
{ {
return SecurityUtils.getSubject().getSession(); return SecurityUtils.getSubject().getSession();
} }
public static void logout() public static void logout()
{ {
getSubjct().logout(); getSubjct().logout();
} }
public static SysUser getSysUser() public static SysUser getSysUser()
{ {
SysUser user = null; SysUser user = null;
Object obj = getSubjct().getPrincipal(); Object obj = getSubjct().getPrincipal();
if (StringUtils.isNotNull(obj)) if (StringUtils.isNotNull(obj))
{ {
user = new SysUser(); user = new SysUser();
BeanUtils.copyBeanProp(user, obj); BeanUtils.copyBeanProp(user, obj);
} }
return user; return user;
} }
public static void setSysUser(SysUser user) public static void setSysUser(SysUser user)
{ {
Subject subject = getSubjct(); Subject subject = getSubjct();
PrincipalCollection principalCollection = subject.getPrincipals(); PrincipalCollection principalCollection = subject.getPrincipals();
String realmName = principalCollection.getRealmNames().iterator().next(); String realmName = principalCollection.getRealmNames().iterator().next();
PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(user, realmName); PrincipalCollection newPrincipalCollection = new SimplePrincipalCollection(user, realmName);
// 重新加载Principal // 重新加载Principal
subject.runAs(newPrincipalCollection); subject.runAs(newPrincipalCollection);
} }
public static void clearCachedAuthorizationInfo() public static void clearCachedAuthorizationInfo()
{ {
RealmSecurityManager rsm = (RealmSecurityManager) SecurityUtils.getSecurityManager(); RealmSecurityManager rsm = (RealmSecurityManager) SecurityUtils.getSecurityManager();
UserRealm realm = (UserRealm) rsm.getRealms().iterator().next(); UserRealm realm = (UserRealm) rsm.getRealms().iterator().next();
realm.clearCachedAuthorizationInfo(); realm.clearCachedAuthorizationInfo();
} }
public static Long getUserId() public static Long getUserId()
{ {
return getSysUser().getUserId().longValue(); return getSysUser().getUserId().longValue();
} }
public static String getLoginName() public static String getLoginName()
{ {
return getSysUser().getLoginName(); return getSysUser().getLoginName();
} }
public static String getIp() public static String getIp()
{ {
return getSubjct().getSession().getHost(); return getSubjct().getSession().getHost();
} }
public static String getSessionId() public static String getSessionId()
{ {
return String.valueOf(getSubjct().getSession().getId()); return String.valueOf(getSubjct().getSession().getId());
} }
/** /**
* 生成随机盐 * 生成随机盐
*/ */
public static String randomSalt() public static String randomSalt()
{ {
// 一个Byte占两个字节此处生成的3字节字符串长度为6 // 一个Byte占两个字节此处生成的3字节字符串长度为6
SecureRandomNumberGenerator secureRandom = new SecureRandomNumberGenerator(); SecureRandomNumberGenerator secureRandom = new SecureRandomNumberGenerator();
String hex = secureRandom.nextBytes(3).toHex(); String hex = secureRandom.nextBytes(3).toHex();
return hex; return hex;
} }
} }