apiResult = new Rust<>();
+ apiResult.setCode(code);
+ apiResult.setData(data);
+ apiResult.setMsg(msg);
+ return apiResult;
+ }
+
+ public int getCode() {
+ return code;
+ }
+
+ public void setCode(int code) {
+ this.code = code;
+ }
+
+ public String getMsg() {
+ return msg;
+ }
+
+ public void setMsg(String msg) {
+ this.msg = msg;
+ }
+
+ public T getData() {
+ return data;
+ }
+
+ public void setData(T data) {
+ this.data = data;
+ }
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/UserStatus.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/UserStatus.java
index 9ff84960..66ce7340 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/UserStatus.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/enums/UserStatus.java
@@ -2,29 +2,36 @@ package com.ruoyi.common.core.enums;
/**
* 用户状态
- *
+ *
* @author ruoyi
*/
-public enum UserStatus
-{
- OK("0", "正常"), DISABLE("1", "停用"), DELETED("2", "删除");
+public enum UserStatus {
+ /**
+ * EXPORT
+ */
+ OK("0", "正常"),
+ /**
+ * EXPORT
+ */
+ DISABLE("1", "停用"),
+ /**
+ * EXPORT
+ */
+ DELETED("2", "删除");
private final String code;
private final String info;
- UserStatus(String code, String info)
- {
+ UserStatus(String code, String info) {
this.code = code;
this.info = info;
}
- public String getCode()
- {
+ public String getCode() {
return code;
}
- public String getInfo()
- {
+ public String getInfo() {
return info;
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CaptchaException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CaptchaException.java
index 3e018510..961f6045 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CaptchaException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CaptchaException.java
@@ -2,15 +2,13 @@ package com.ruoyi.common.core.exception;
/**
* 验证码错误异常类
- *
+ *
* @author ruoyi
*/
-public class CaptchaException extends RuntimeException
-{
+public class CaptchaException extends RuntimeException {
private static final long serialVersionUID = 1L;
- public CaptchaException(String msg)
- {
+ public CaptchaException(String msg) {
super(msg);
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CheckedException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CheckedException.java
index 862eefa5..f4724f75 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CheckedException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/CheckedException.java
@@ -2,30 +2,25 @@ package com.ruoyi.common.core.exception;
/**
* 检查异常
- *
+ *
* @author ruoyi
*/
-public class CheckedException extends RuntimeException
-{
+public class CheckedException extends RuntimeException {
private static final long serialVersionUID = 1L;
- public CheckedException(String message)
- {
+ public CheckedException(String message) {
super(message);
}
- public CheckedException(Throwable cause)
- {
+ public CheckedException(Throwable cause) {
super(cause);
}
- public CheckedException(String message, Throwable cause)
- {
+ public CheckedException(String message, Throwable cause) {
super(message, cause);
}
- public CheckedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace)
- {
+ public CheckedException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/DemoModeException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/DemoModeException.java
index ac2a19e9..3af32a38 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/DemoModeException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/DemoModeException.java
@@ -2,14 +2,12 @@ package com.ruoyi.common.core.exception;
/**
* 演示模式异常
- *
+ *
* @author ruoyi
*/
-public class DemoModeException extends RuntimeException
-{
+public class DemoModeException extends RuntimeException {
private static final long serialVersionUID = 1L;
- public DemoModeException()
- {
+ public DemoModeException() {
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java
index 9beb54bd..baf744eb 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/GlobalException.java
@@ -2,11 +2,10 @@ package com.ruoyi.common.core.exception;
/**
* 全局异常
- *
+ *
* @author ruoyi
*/
-public class GlobalException extends RuntimeException
-{
+public class GlobalException extends RuntimeException {
private static final long serialVersionUID = 1L;
@@ -17,41 +16,36 @@ public class GlobalException extends RuntimeException
/**
* 错误明细,内部调试错误
- *
- * 和 {@link CommonResult#getDetailMessage()} 一致的设计
+ *
+ * 和 CommonResult#getDetailMessage() 一致的设计
*/
private String detailMessage;
/**
* 空构造方法,避免反序列化问题
*/
- public GlobalException()
- {
+ public GlobalException() {
}
- public GlobalException(String message)
- {
+ public GlobalException(String message) {
this.message = message;
}
- public String getDetailMessage()
- {
+ public String getDetailMessage() {
return detailMessage;
}
- public GlobalException setDetailMessage(String detailMessage)
- {
+ public GlobalException setDetailMessage(String detailMessage) {
this.detailMessage = detailMessage;
return this;
}
- public String getMessage()
- {
+ @Override
+ public String getMessage() {
return message;
}
- public GlobalException setMessage(String message)
- {
+ public GlobalException setMessage(String message) {
this.message = message;
return this;
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/InnerAuthException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/InnerAuthException.java
index 8a7abe9f..5cc2eadc 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/InnerAuthException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/InnerAuthException.java
@@ -2,15 +2,13 @@ package com.ruoyi.common.core.exception;
/**
* 内部认证异常
- *
+ *
* @author ruoyi
*/
-public class InnerAuthException extends RuntimeException
-{
+public class InnerAuthException extends RuntimeException {
private static final long serialVersionUID = 1L;
- public InnerAuthException(String message)
- {
+ public InnerAuthException(String message) {
super(message);
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/PreAuthorizeException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/PreAuthorizeException.java
index 3d420c41..5d786c3a 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/PreAuthorizeException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/PreAuthorizeException.java
@@ -2,14 +2,12 @@ package com.ruoyi.common.core.exception;
/**
* 权限异常
- *
+ *
* @author ruoyi
*/
-public class PreAuthorizeException extends RuntimeException
-{
+public class PreAuthorizeException extends RuntimeException {
private static final long serialVersionUID = 1L;
- public PreAuthorizeException()
- {
+ public PreAuthorizeException() {
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/ServiceException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/ServiceException.java
index d2b7763b..2eb680f8 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/ServiceException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/ServiceException.java
@@ -2,11 +2,10 @@ package com.ruoyi.common.core.exception;
/**
* 业务异常
- *
+ *
* @author ruoyi
*/
-public final class ServiceException extends RuntimeException
-{
+public final class ServiceException extends RuntimeException {
private static final long serialVersionUID = 1L;
/**
@@ -21,53 +20,46 @@ public final class ServiceException extends RuntimeException
/**
* 错误明细,内部调试错误
- *
- * 和 {@link CommonResult#getDetailMessage()} 一致的设计
+ *
+ * 和 CommonResult#getDetailMessage() 一致的设计
*/
private String detailMessage;
/**
* 空构造方法,避免反序列化问题
*/
- public ServiceException()
- {
+ public ServiceException() {
}
- public ServiceException(String message)
- {
+ public ServiceException(String message) {
this.message = message;
}
- public ServiceException(String message, Integer code)
- {
+ public ServiceException(String message, Integer code) {
this.message = message;
this.code = code;
}
- public String getDetailMessage()
- {
+ public String getDetailMessage() {
return detailMessage;
}
- public String getMessage()
- {
- return message;
+ public ServiceException setDetailMessage(String detailMessage) {
+ this.detailMessage = detailMessage;
+ return this;
}
- public Integer getCode()
- {
- return code;
+ @Override
+ public String getMessage() {
+ return message;
}
- public ServiceException setMessage(String message)
- {
+ public ServiceException setMessage(String message) {
this.message = message;
return this;
}
- public ServiceException setDetailMessage(String detailMessage)
- {
- this.detailMessage = detailMessage;
- return this;
+ public Integer getCode() {
+ return code;
}
}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/UtilException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/UtilException.java
index a1c16b53..ed5e4e82 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/UtilException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/UtilException.java
@@ -2,25 +2,21 @@ package com.ruoyi.common.core.exception;
/**
* 工具类异常
- *
+ *
* @author ruoyi
*/
-public class UtilException extends RuntimeException
-{
+public class UtilException extends RuntimeException {
private static final long serialVersionUID = 8247610319171014183L;
- public UtilException(Throwable e)
- {
+ public UtilException(Throwable e) {
super(e.getMessage(), e);
}
- public UtilException(String message)
- {
+ public UtilException(String message) {
super(message);
}
- public UtilException(String message, Throwable throwable)
- {
+ public UtilException(String message, Throwable throwable) {
super(message, throwable);
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotLoginException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotLoginException.java
index eb6c3ae9..47ce5aba 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotLoginException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotLoginException.java
@@ -2,15 +2,13 @@ package com.ruoyi.common.core.exception.auth;
/**
* 未能通过的登录认证异常
- *
+ *
* @author ruoyi
*/
-public class NotLoginException extends RuntimeException
-{
+public class NotLoginException extends RuntimeException {
private static final long serialVersionUID = 1L;
- public NotLoginException(String message)
- {
+ public NotLoginException(String message) {
super(message);
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotPermissionException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotPermissionException.java
index a578a42e..82994f02 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotPermissionException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotPermissionException.java
@@ -4,20 +4,17 @@ import org.apache.commons.lang3.StringUtils;
/**
* 未能通过的权限认证异常
- *
+ *
* @author ruoyi
*/
-public class NotPermissionException extends RuntimeException
-{
+public class NotPermissionException extends RuntimeException {
private static final long serialVersionUID = 1L;
- public NotPermissionException(String permission)
- {
+ public NotPermissionException(String permission) {
super(permission);
}
- public NotPermissionException(String[] permissions)
- {
+ public NotPermissionException(String[] permissions) {
super(StringUtils.join(permissions, ","));
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotRoleException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotRoleException.java
index d07118fb..84abe137 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotRoleException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/auth/NotRoleException.java
@@ -4,20 +4,17 @@ import org.apache.commons.lang3.StringUtils;
/**
* 未能通过的角色认证异常
- *
+ *
* @author ruoyi
*/
-public class NotRoleException extends RuntimeException
-{
+public class NotRoleException extends RuntimeException {
private static final long serialVersionUID = 1L;
- public NotRoleException(String role)
- {
+ public NotRoleException(String role) {
super(role);
}
- public NotRoleException(String[] roles)
- {
+ public NotRoleException(String[] roles) {
super(StringUtils.join(roles, ","));
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/base/BaseException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/base/BaseException.java
index 3d2fa105..d37252bb 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/base/BaseException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/base/BaseException.java
@@ -2,11 +2,10 @@ package com.ruoyi.common.core.exception.base;
/**
* 基础异常
- *
+ *
* @author ruoyi
*/
-public class BaseException extends RuntimeException
-{
+public class BaseException extends RuntimeException {
private static final long serialVersionUID = 1L;
/**
@@ -29,51 +28,42 @@ public class BaseException extends RuntimeException
*/
private String defaultMessage;
- public BaseException(String module, String code, Object[] args, String defaultMessage)
- {
+ public BaseException(String module, String code, Object[] args, String defaultMessage) {
this.module = module;
this.code = code;
this.args = args;
this.defaultMessage = defaultMessage;
}
- public BaseException(String module, String code, Object[] args)
- {
+ public BaseException(String module, String code, Object[] args) {
this(module, code, args, null);
}
- public BaseException(String module, String defaultMessage)
- {
+ public BaseException(String module, String defaultMessage) {
this(module, null, null, defaultMessage);
}
- public BaseException(String code, Object[] args)
- {
+ public BaseException(String code, Object[] args) {
this(null, code, args, null);
}
- public BaseException(String defaultMessage)
- {
+ public BaseException(String defaultMessage) {
this(null, null, null, defaultMessage);
}
- public String getModule()
- {
+ public String getModule() {
return module;
}
- public String getCode()
- {
+ public String getCode() {
return code;
}
- public Object[] getArgs()
- {
+ public Object[] getArgs() {
return args;
}
- public String getDefaultMessage()
- {
+ public String getDefaultMessage() {
return defaultMessage;
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileException.java
index ae615432..a2766911 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileException.java
@@ -4,15 +4,13 @@ import com.ruoyi.common.core.exception.base.BaseException;
/**
* 文件信息异常类
- *
+ *
* @author ruoyi
*/
-public class FileException extends BaseException
-{
+public class FileException extends BaseException {
private static final long serialVersionUID = 1L;
- public FileException(String code, Object[] args)
- {
+ public FileException(String code, Object[] args) {
super("file", code, args, null);
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileNameLengthLimitExceededException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileNameLengthLimitExceededException.java
index c425acdf..16a2f773 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileNameLengthLimitExceededException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileNameLengthLimitExceededException.java
@@ -2,15 +2,13 @@ package com.ruoyi.common.core.exception.file;
/**
* 文件名称超长限制异常类
- *
+ *
* @author ruoyi
*/
-public class FileNameLengthLimitExceededException extends FileException
-{
+public class FileNameLengthLimitExceededException extends FileException {
private static final long serialVersionUID = 1L;
- public FileNameLengthLimitExceededException(int defaultFileNameLength)
- {
- super("upload.filename.exceed.length", new Object[] { defaultFileNameLength });
+ public FileNameLengthLimitExceededException(int defaultFileNameLength) {
+ super("upload.filename.exceed.length", new Object[]{defaultFileNameLength});
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileSizeLimitExceededException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileSizeLimitExceededException.java
index 0426067a..35c85cd2 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileSizeLimitExceededException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/FileSizeLimitExceededException.java
@@ -2,15 +2,13 @@ package com.ruoyi.common.core.exception.file;
/**
* 文件名大小限制异常类
- *
+ *
* @author ruoyi
*/
-public class FileSizeLimitExceededException extends FileException
-{
+public class FileSizeLimitExceededException extends FileException {
private static final long serialVersionUID = 1L;
- public FileSizeLimitExceededException(long defaultMaxSize)
- {
- super("upload.exceed.maxSize", new Object[] { defaultMaxSize });
+ public FileSizeLimitExceededException(long defaultMaxSize) {
+ super("upload.exceed.maxSize", new Object[]{defaultMaxSize});
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/InvalidExtensionException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/InvalidExtensionException.java
index 33b6912a..7e23a0f1 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/InvalidExtensionException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/file/InvalidExtensionException.java
@@ -1,80 +1,68 @@
package com.ruoyi.common.core.exception.file;
-import java.util.Arrays;
import org.apache.commons.fileupload.FileUploadException;
+import java.util.Arrays;
+
/**
* 文件上传 误异常类
- *
+ *
* @author ruoyi
*/
-public class InvalidExtensionException extends FileUploadException
-{
+public class InvalidExtensionException extends FileUploadException {
private static final long serialVersionUID = 1L;
private String[] allowedExtension;
private String extension;
private String filename;
- public InvalidExtensionException(String[] allowedExtension, String extension, String filename)
- {
+ public InvalidExtensionException(String[] allowedExtension, String extension, String filename) {
super("filename : [" + filename + "], extension : [" + extension + "], allowed extension : [" + Arrays.toString(allowedExtension) + "]");
this.allowedExtension = allowedExtension;
this.extension = extension;
this.filename = filename;
}
- public String[] getAllowedExtension()
- {
+ public String[] getAllowedExtension() {
return allowedExtension;
}
- public String getExtension()
- {
+ public String getExtension() {
return extension;
}
- public String getFilename()
- {
+ public String getFilename() {
return filename;
}
- public static class InvalidImageExtensionException extends InvalidExtensionException
- {
+ public static class InvalidImageExtensionException extends InvalidExtensionException {
private static final long serialVersionUID = 1L;
- public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename)
- {
+ public InvalidImageExtensionException(String[] allowedExtension, String extension, String filename) {
super(allowedExtension, extension, filename);
}
}
- public static class InvalidFlashExtensionException extends InvalidExtensionException
- {
+ public static class InvalidFlashExtensionException extends InvalidExtensionException {
private static final long serialVersionUID = 1L;
- public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename)
- {
+ public InvalidFlashExtensionException(String[] allowedExtension, String extension, String filename) {
super(allowedExtension, extension, filename);
}
}
- public static class InvalidMediaExtensionException extends InvalidExtensionException
- {
+ public static class InvalidMediaExtensionException extends InvalidExtensionException {
private static final long serialVersionUID = 1L;
- public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename)
- {
+ public InvalidMediaExtensionException(String[] allowedExtension, String extension, String filename) {
super(allowedExtension, extension, filename);
}
}
-
- public static class InvalidVideoExtensionException extends InvalidExtensionException
- {
+
+ public static class InvalidVideoExtensionException extends InvalidExtensionException {
private static final long serialVersionUID = 1L;
- public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename)
- {
+ public InvalidVideoExtensionException(String[] allowedExtension, String extension, String filename) {
super(allowedExtension, extension, filename);
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/job/TaskException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/job/TaskException.java
index c98397c1..069da970 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/job/TaskException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/job/TaskException.java
@@ -2,33 +2,47 @@ package com.ruoyi.common.core.exception.job;
/**
* 计划策略异常
- *
+ *
* @author ruoyi
*/
-public class TaskException extends Exception
-{
+public class TaskException extends Exception {
private static final long serialVersionUID = 1L;
private Code code;
- public TaskException(String msg, Code code)
- {
+ public TaskException(String msg, Code code) {
this(msg, code, null);
}
- public TaskException(String msg, Code code, Exception nestedEx)
- {
+ public TaskException(String msg, Code code, Exception nestedEx) {
super(msg, nestedEx);
this.code = code;
}
- public Code getCode()
- {
+ public Code getCode() {
return code;
}
- public enum Code
- {
- TASK_EXISTS, NO_TASK_EXISTS, TASK_ALREADY_STARTED, UNKNOWN, CONFIG_ERROR, TASK_NODE_NOT_AVAILABLE
+ public enum Code {
+ /**
+ * EXPORT
+ */
+ TASK_EXISTS,
+ /**
+ * EXPORT
+ */
+ NO_TASK_EXISTS,
+ /**
+ * EXPORT
+ */
+ TASK_ALREADY_STARTED,
+ /**
+ * EXPORT
+ */
+ UNKNOWN, CONFIG_ERROR,
+ /**
+ * EXPORT
+ */
+ TASK_NODE_NOT_AVAILABLE
}
}
\ No newline at end of file
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/CaptchaExpireException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/CaptchaExpireException.java
index 6924d7e5..87d5fe3f 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/CaptchaExpireException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/CaptchaExpireException.java
@@ -2,15 +2,13 @@ package com.ruoyi.common.core.exception.user;
/**
* 验证码失效异常类
- *
+ *
* @author ruoyi
*/
-public class CaptchaExpireException extends UserException
-{
+public class CaptchaExpireException extends UserException {
private static final long serialVersionUID = 1L;
- public CaptchaExpireException()
- {
+ public CaptchaExpireException() {
super("user.jcaptcha.expire", null);
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/UserException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/UserException.java
index 5493804c..c7b8aefd 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/UserException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/UserException.java
@@ -4,15 +4,13 @@ import com.ruoyi.common.core.exception.base.BaseException;
/**
* 用户信息异常类
- *
+ *
* @author ruoyi
*/
-public class UserException extends BaseException
-{
+public class UserException extends BaseException {
private static final long serialVersionUID = 1L;
- public UserException(String code, Object[] args)
- {
+ public UserException(String code, Object[] args) {
super("user", code, args, null);
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/UserPasswordNotMatchException.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/UserPasswordNotMatchException.java
index 7f514a60..0a9aa5c2 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/UserPasswordNotMatchException.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/exception/user/UserPasswordNotMatchException.java
@@ -2,15 +2,13 @@ package com.ruoyi.common.core.exception.user;
/**
* 用户密码不正确或不符合规范异常类
- *
+ *
* @author ruoyi
*/
-public class UserPasswordNotMatchException extends UserException
-{
+public class UserPasswordNotMatchException extends UserException {
private static final long serialVersionUID = 1L;
- public UserPasswordNotMatchException()
- {
+ public UserPasswordNotMatchException() {
super("user.password.not.match", null);
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/CharsetKit.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/CharsetKit.java
index 662f817f..c377f383 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/CharsetKit.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/CharsetKit.java
@@ -1,76 +1,82 @@
package com.ruoyi.common.core.text;
+import com.ruoyi.common.core.utils.StringUtils;
+
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
-import com.ruoyi.common.core.utils.StringUtils;
/**
* 字符集工具类
- *
+ *
* @author ruoyi
*/
-public class CharsetKit
-{
- /** ISO-8859-1 */
+public class CharsetKit {
+ /**
+ * ISO-8859-1
+ */
public static final String ISO_8859_1 = "ISO-8859-1";
- /** UTF-8 */
+ /**
+ * UTF-8
+ */
public static final String UTF_8 = "UTF-8";
- /** GBK */
+ /**
+ * GBK
+ */
public static final String GBK = "GBK";
- /** ISO-8859-1 */
+ /**
+ * ISO-8859-1
+ */
public static final Charset CHARSET_ISO_8859_1 = Charset.forName(ISO_8859_1);
- /** UTF-8 */
+ /**
+ * UTF-8
+ */
public static final Charset CHARSET_UTF_8 = Charset.forName(UTF_8);
- /** GBK */
+ /**
+ * GBK
+ */
public static final Charset CHARSET_GBK = Charset.forName(GBK);
/**
* 转换为Charset对象
- *
+ *
* @param charset 字符集,为空则返回默认字符集
* @return Charset
*/
- public static Charset charset(String charset)
- {
+ public static Charset charset(String charset) {
return StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset);
}
/**
* 转换字符串的字符集编码
- *
- * @param source 字符串
- * @param srcCharset 源字符集,默认ISO-8859-1
+ *
+ * @param source 字符串
+ * @param srcCharset 源字符集,默认ISO-8859-1
* @param destCharset 目标字符集,默认UTF-8
* @return 转换后的字符集
*/
- public static String convert(String source, String srcCharset, String destCharset)
- {
+ public static String convert(String source, String srcCharset, String destCharset) {
return convert(source, Charset.forName(srcCharset), Charset.forName(destCharset));
}
/**
* 转换字符串的字符集编码
- *
- * @param source 字符串
- * @param srcCharset 源字符集,默认ISO-8859-1
+ *
+ * @param source 字符串
+ * @param srcCharset 源字符集,默认ISO-8859-1
* @param destCharset 目标字符集,默认UTF-8
* @return 转换后的字符集
*/
- public static String convert(String source, Charset srcCharset, Charset destCharset)
- {
- if (null == srcCharset)
- {
+ public static String convert(String source, Charset srcCharset, Charset destCharset) {
+ if (null == srcCharset) {
srcCharset = StandardCharsets.ISO_8859_1;
}
- if (null == destCharset)
- {
+ if (null == destCharset) {
destCharset = StandardCharsets.UTF_8;
}
- if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset))
- {
+ if (StringUtils.isEmpty(source) || srcCharset.equals(destCharset)) {
return source;
}
return new String(source.getBytes(srcCharset), destCharset);
@@ -79,8 +85,7 @@ public class CharsetKit
/**
* @return 系统字符集编码
*/
- public static String systemCharset()
- {
+ public static String systemCharset() {
return Charset.defaultCharset().name();
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/Convert.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/Convert.java
index 95a00b73..7816cffb 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/Convert.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/Convert.java
@@ -1,37 +1,34 @@
package com.ruoyi.common.core.text;
+import com.ruoyi.common.core.utils.StringUtils;
+
import java.math.BigDecimal;
import java.math.BigInteger;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.text.NumberFormat;
import java.util.Set;
-import com.ruoyi.common.core.utils.StringUtils;
/**
* 类型转换器
- *
+ *
* @author ruoyi
*/
-public class Convert
-{
+public class Convert {
/**
* 转换为字符串
* 如果给定的值为null,或者转换失败,返回默认值
* 转换失败不会报错
- *
- * @param value 被转换的值
+ *
+ * @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
- public static String toStr(Object value, String defaultValue)
- {
- if (null == value)
- {
+ public static String toStr(Object value, String defaultValue) {
+ if (null == value) {
return defaultValue;
}
- if (value instanceof String)
- {
+ if (value instanceof String) {
return (String) value;
}
return value.toString();
@@ -41,12 +38,11 @@ public class Convert
* 转换为字符串
* 如果给定的值为null
,或者转换失败,返回默认值null
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
- public static String toStr(Object value)
- {
+ public static String toStr(Object value) {
return toStr(value, null);
}
@@ -54,19 +50,16 @@ public class Convert
* 转换为字符
* 如果给定的值为null,或者转换失败,返回默认值
* 转换失败不会报错
- *
- * @param value 被转换的值
+ *
+ * @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
- public static Character toChar(Object value, Character defaultValue)
- {
- if (null == value)
- {
+ public static Character toChar(Object value, Character defaultValue) {
+ if (null == value) {
return defaultValue;
}
- if (value instanceof Character)
- {
+ if (value instanceof Character) {
return (Character) value;
}
@@ -78,12 +71,11 @@ public class Convert
* 转换为字符
* 如果给定的值为null
,或者转换失败,返回默认值null
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
- public static Character toChar(Object value)
- {
+ public static Character toChar(Object value) {
return toChar(value, null);
}
@@ -91,36 +83,28 @@ public class Convert
* 转换为byte
* 如果给定的值为null
,或者转换失败,返回默认值
* 转换失败不会报错
- *
- * @param value 被转换的值
+ *
+ * @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
- public static Byte toByte(Object value, Byte defaultValue)
- {
- if (value == null)
- {
+ public static Byte toByte(Object value, Byte defaultValue) {
+ if (value == null) {
return defaultValue;
}
- if (value instanceof Byte)
- {
+ if (value instanceof Byte) {
return (Byte) value;
}
- if (value instanceof Number)
- {
+ if (value instanceof Number) {
return ((Number) value).byteValue();
}
final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr))
- {
+ if (StringUtils.isEmpty(valueStr)) {
return defaultValue;
}
- try
- {
+ try {
return Byte.parseByte(valueStr);
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return defaultValue;
}
}
@@ -129,12 +113,11 @@ public class Convert
* 转换为byte
* 如果给定的值为null
,或者转换失败,返回默认值null
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
- public static Byte toByte(Object value)
- {
+ public static Byte toByte(Object value) {
return toByte(value, null);
}
@@ -142,36 +125,28 @@ public class Convert
* 转换为Short
* 如果给定的值为null
,或者转换失败,返回默认值
* 转换失败不会报错
- *
- * @param value 被转换的值
+ *
+ * @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
- public static Short toShort(Object value, Short defaultValue)
- {
- if (value == null)
- {
+ public static Short toShort(Object value, Short defaultValue) {
+ if (value == null) {
return defaultValue;
}
- if (value instanceof Short)
- {
+ if (value instanceof Short) {
return (Short) value;
}
- if (value instanceof Number)
- {
+ if (value instanceof Number) {
return ((Number) value).shortValue();
}
final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr))
- {
+ if (StringUtils.isEmpty(valueStr)) {
return defaultValue;
}
- try
- {
+ try {
return Short.parseShort(valueStr.trim());
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return defaultValue;
}
}
@@ -180,12 +155,11 @@ public class Convert
* 转换为Short
* 如果给定的值为null
,或者转换失败,返回默认值null
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
- public static Short toShort(Object value)
- {
+ public static Short toShort(Object value) {
return toShort(value, null);
}
@@ -193,32 +167,25 @@ public class Convert
* 转换为Number
* 如果给定的值为空,或者转换失败,返回默认值
* 转换失败不会报错
- *
- * @param value 被转换的值
+ *
+ * @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
- public static Number toNumber(Object value, Number defaultValue)
- {
- if (value == null)
- {
+ public static Number toNumber(Object value, Number defaultValue) {
+ if (value == null) {
return defaultValue;
}
- if (value instanceof Number)
- {
+ if (value instanceof Number) {
return (Number) value;
}
final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr))
- {
+ if (StringUtils.isEmpty(valueStr)) {
return defaultValue;
}
- try
- {
+ try {
return NumberFormat.getInstance().parse(valueStr);
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return defaultValue;
}
}
@@ -227,12 +194,11 @@ public class Convert
* 转换为Number
* 如果给定的值为空,或者转换失败,返回默认值null
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
- public static Number toNumber(Object value)
- {
+ public static Number toNumber(Object value) {
return toNumber(value, null);
}
@@ -240,36 +206,28 @@ public class Convert
* 转换为int
* 如果给定的值为空,或者转换失败,返回默认值
* 转换失败不会报错
- *
- * @param value 被转换的值
+ *
+ * @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
- public static Integer toInt(Object value, Integer defaultValue)
- {
- if (value == null)
- {
+ public static Integer toInt(Object value, Integer defaultValue) {
+ if (value == null) {
return defaultValue;
}
- if (value instanceof Integer)
- {
+ if (value instanceof Integer) {
return (Integer) value;
}
- if (value instanceof Number)
- {
+ if (value instanceof Number) {
return ((Number) value).intValue();
}
final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr))
- {
+ if (StringUtils.isEmpty(valueStr)) {
return defaultValue;
}
- try
- {
+ try {
return Integer.parseInt(valueStr.trim());
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return defaultValue;
}
}
@@ -278,54 +236,48 @@ public class Convert
* 转换为int
* 如果给定的值为null
,或者转换失败,返回默认值null
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
- public static Integer toInt(Object value)
- {
+ public static Integer toInt(Object value) {
return toInt(value, null);
}
/**
* 转换为Integer数组
- *
+ *
* @param str 被转换的值
* @return 结果
*/
- public static Integer[] toIntArray(String str)
- {
+ public static Integer[] toIntArray(String str) {
return toIntArray(",", str);
}
/**
* 转换为Long数组
- *
+ *
* @param str 被转换的值
* @return 结果
*/
- public static Long[] toLongArray(String str)
- {
+ public static Long[] toLongArray(String str) {
return toLongArray(",", str);
}
/**
* 转换为Integer数组
- *
+ *
* @param split 分隔符
* @param split 被转换的值
* @return 结果
*/
- public static Integer[] toIntArray(String split, String str)
- {
- if (StringUtils.isEmpty(str))
- {
- return new Integer[] {};
+ public static Integer[] toIntArray(String split, String str) {
+ if (StringUtils.isEmpty(str)) {
+ return new Integer[]{};
}
String[] arr = str.split(split);
final Integer[] ints = new Integer[arr.length];
- for (int i = 0; i < arr.length; i++)
- {
+ for (int i = 0; i < arr.length; i++) {
final Integer v = toInt(arr[i], 0);
ints[i] = v;
}
@@ -334,21 +286,18 @@ public class Convert
/**
* 转换为Long数组
- *
+ *
* @param split 分隔符
- * @param str 被转换的值
+ * @param str 被转换的值
* @return 结果
*/
- public static Long[] toLongArray(String split, String str)
- {
- if (StringUtils.isEmpty(str))
- {
- return new Long[] {};
+ public static Long[] toLongArray(String split, String str) {
+ if (StringUtils.isEmpty(str)) {
+ return new Long[]{};
}
String[] arr = str.split(split);
final Long[] longs = new Long[arr.length];
- for (int i = 0; i < arr.length; i++)
- {
+ for (int i = 0; i < arr.length; i++) {
final Long v = toLong(arr[i], null);
longs[i] = v;
}
@@ -357,24 +306,22 @@ public class Convert
/**
* 转换为String数组
- *
+ *
* @param str 被转换的值
* @return 结果
*/
- public static String[] toStrArray(String str)
- {
+ public static String[] toStrArray(String str) {
return toStrArray(",", str);
}
/**
* 转换为String数组
- *
+ *
* @param split 分隔符
* @param split 被转换的值
* @return 结果
*/
- public static String[] toStrArray(String split, String str)
- {
+ public static String[] toStrArray(String split, String str) {
return str.split(split);
}
@@ -382,37 +329,29 @@ public class Convert
* 转换为long
* 如果给定的值为空,或者转换失败,返回默认值
* 转换失败不会报错
- *
- * @param value 被转换的值
+ *
+ * @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
- public static Long toLong(Object value, Long defaultValue)
- {
- if (value == null)
- {
+ public static Long toLong(Object value, Long defaultValue) {
+ if (value == null) {
return defaultValue;
}
- if (value instanceof Long)
- {
+ if (value instanceof Long) {
return (Long) value;
}
- if (value instanceof Number)
- {
+ if (value instanceof Number) {
return ((Number) value).longValue();
}
final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr))
- {
+ if (StringUtils.isEmpty(valueStr)) {
return defaultValue;
}
- try
- {
+ try {
// 支持科学计数法
return new BigDecimal(valueStr.trim()).longValue();
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return defaultValue;
}
}
@@ -421,12 +360,11 @@ public class Convert
* 转换为long
* 如果给定的值为null
,或者转换失败,返回默认值null
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
- public static Long toLong(Object value)
- {
+ public static Long toLong(Object value) {
return toLong(value, null);
}
@@ -434,37 +372,29 @@ public class Convert
* 转换为double
* 如果给定的值为空,或者转换失败,返回默认值
* 转换失败不会报错
- *
- * @param value 被转换的值
+ *
+ * @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
- public static Double toDouble(Object value, Double defaultValue)
- {
- if (value == null)
- {
+ public static Double toDouble(Object value, Double defaultValue) {
+ if (value == null) {
return defaultValue;
}
- if (value instanceof Double)
- {
+ if (value instanceof Double) {
return (Double) value;
}
- if (value instanceof Number)
- {
+ if (value instanceof Number) {
return ((Number) value).doubleValue();
}
final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr))
- {
+ if (StringUtils.isEmpty(valueStr)) {
return defaultValue;
}
- try
- {
+ try {
// 支持科学计数法
return new BigDecimal(valueStr.trim()).doubleValue();
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return defaultValue;
}
}
@@ -473,12 +403,11 @@ public class Convert
* 转换为double
* 如果给定的值为空,或者转换失败,返回默认值null
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
- public static Double toDouble(Object value)
- {
+ public static Double toDouble(Object value) {
return toDouble(value, null);
}
@@ -486,36 +415,28 @@ public class Convert
* 转换为Float
* 如果给定的值为空,或者转换失败,返回默认值
* 转换失败不会报错
- *
- * @param value 被转换的值
+ *
+ * @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
- public static Float toFloat(Object value, Float defaultValue)
- {
- if (value == null)
- {
+ public static Float toFloat(Object value, Float defaultValue) {
+ if (value == null) {
return defaultValue;
}
- if (value instanceof Float)
- {
+ if (value instanceof Float) {
return (Float) value;
}
- if (value instanceof Number)
- {
+ if (value instanceof Number) {
return ((Number) value).floatValue();
}
final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr))
- {
+ if (StringUtils.isEmpty(valueStr)) {
return defaultValue;
}
- try
- {
+ try {
return Float.parseFloat(valueStr.trim());
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return defaultValue;
}
}
@@ -524,12 +445,11 @@ public class Convert
* 转换为Float
* 如果给定的值为空,或者转换失败,返回默认值null
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
- public static Float toFloat(Object value)
- {
+ public static Float toFloat(Object value) {
return toFloat(value, null);
}
@@ -537,29 +457,24 @@ public class Convert
* 转换为boolean
* String支持的值为:true、false、yes、ok、no,1,0 如果给定的值为空,或者转换失败,返回默认值
* 转换失败不会报错
- *
- * @param value 被转换的值
+ *
+ * @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
- public static Boolean toBool(Object value, Boolean defaultValue)
- {
- if (value == null)
- {
+ public static Boolean toBool(Object value, Boolean defaultValue) {
+ if (value == null) {
return defaultValue;
}
- if (value instanceof Boolean)
- {
+ if (value instanceof Boolean) {
return (Boolean) value;
}
String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr))
- {
+ if (StringUtils.isEmpty(valueStr)) {
return defaultValue;
}
valueStr = valueStr.trim().toLowerCase();
- switch (valueStr)
- {
+ switch (valueStr) {
case "true":
return true;
case "false":
@@ -583,47 +498,39 @@ public class Convert
* 转换为boolean
* 如果给定的值为空,或者转换失败,返回默认值null
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
- public static Boolean toBool(Object value)
- {
+ public static Boolean toBool(Object value) {
return toBool(value, null);
}
/**
* 转换为Enum对象
* 如果给定的值为空,或者转换失败,返回默认值
- *
- * @param clazz Enum的Class
- * @param value 值
+ *
+ * @param clazz Enum的Class
+ * @param value 值
* @param defaultValue 默认值
* @return Enum
*/
- public static > E toEnum(Class clazz, Object value, E defaultValue)
- {
- if (value == null)
- {
+ public static > E toEnum(Class clazz, Object value, E defaultValue) {
+ if (value == null) {
return defaultValue;
}
- if (clazz.isAssignableFrom(value.getClass()))
- {
+ if (clazz.isAssignableFrom(value.getClass())) {
@SuppressWarnings("unchecked")
E myE = (E) value;
return myE;
}
final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr))
- {
+ if (StringUtils.isEmpty(valueStr)) {
return defaultValue;
}
- try
- {
+ try {
return Enum.valueOf(clazz, valueStr);
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return defaultValue;
}
}
@@ -631,13 +538,12 @@ public class Convert
/**
* 转换为Enum对象
* 如果给定的值为空,或者转换失败,返回默认值null
- *
+ *
* @param clazz Enum的Class
* @param value 值
* @return Enum
*/
- public static > E toEnum(Class clazz, Object value)
- {
+ public static > E toEnum(Class clazz, Object value) {
return toEnum(clazz, value, null);
}
@@ -645,36 +551,28 @@ public class Convert
* 转换为BigInteger
* 如果给定的值为空,或者转换失败,返回默认值
* 转换失败不会报错
- *
- * @param value 被转换的值
+ *
+ * @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
- public static BigInteger toBigInteger(Object value, BigInteger defaultValue)
- {
- if (value == null)
- {
+ public static BigInteger toBigInteger(Object value, BigInteger defaultValue) {
+ if (value == null) {
return defaultValue;
}
- if (value instanceof BigInteger)
- {
+ if (value instanceof BigInteger) {
return (BigInteger) value;
}
- if (value instanceof Long)
- {
+ if (value instanceof Long) {
return BigInteger.valueOf((Long) value);
}
final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr))
- {
+ if (StringUtils.isEmpty(valueStr)) {
return defaultValue;
}
- try
- {
+ try {
return new BigInteger(valueStr);
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return defaultValue;
}
}
@@ -683,12 +581,11 @@ public class Convert
* 转换为BigInteger
* 如果给定的值为空,或者转换失败,返回默认值null
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
- public static BigInteger toBigInteger(Object value)
- {
+ public static BigInteger toBigInteger(Object value) {
return toBigInteger(value, null);
}
@@ -696,44 +593,34 @@ public class Convert
* 转换为BigDecimal
* 如果给定的值为空,或者转换失败,返回默认值
* 转换失败不会报错
- *
- * @param value 被转换的值
+ *
+ * @param value 被转换的值
* @param defaultValue 转换错误时的默认值
* @return 结果
*/
- public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue)
- {
- if (value == null)
- {
+ public static BigDecimal toBigDecimal(Object value, BigDecimal defaultValue) {
+ if (value == null) {
return defaultValue;
}
- if (value instanceof BigDecimal)
- {
+ if (value instanceof BigDecimal) {
return (BigDecimal) value;
}
- if (value instanceof Long)
- {
+ if (value instanceof Long) {
return new BigDecimal((Long) value);
}
- if (value instanceof Double)
- {
- return new BigDecimal((Double) value);
+ if (value instanceof Double) {
+ return BigDecimal.valueOf((Double) value);
}
- if (value instanceof Integer)
- {
+ if (value instanceof Integer) {
return new BigDecimal((Integer) value);
}
final String valueStr = toStr(value, null);
- if (StringUtils.isEmpty(valueStr))
- {
+ if (StringUtils.isEmpty(valueStr)) {
return defaultValue;
}
- try
- {
+ try {
return new BigDecimal(valueStr);
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return defaultValue;
}
}
@@ -742,79 +629,65 @@ public class Convert
* 转换为BigDecimal
* 如果给定的值为空,或者转换失败,返回默认值
* 转换失败不会报错
- *
+ *
* @param value 被转换的值
* @return 结果
*/
- public static BigDecimal toBigDecimal(Object value)
- {
+ public static BigDecimal toBigDecimal(Object value) {
return toBigDecimal(value, null);
}
/**
* 将对象转为字符串
* 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
- *
+ *
* @param obj 对象
* @return 字符串
*/
- public static String utf8Str(Object obj)
- {
+ public static String utf8Str(Object obj) {
return str(obj, CharsetKit.CHARSET_UTF_8);
}
/**
* 将对象转为字符串
* 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
- *
- * @param obj 对象
+ *
+ * @param obj 对象
* @param charsetName 字符集
* @return 字符串
*/
- public static String str(Object obj, String charsetName)
- {
+ public static String str(Object obj, String charsetName) {
return str(obj, Charset.forName(charsetName));
}
/**
* 将对象转为字符串
* 1、Byte数组和ByteBuffer会被转换为对应字符串的数组 2、对象数组会调用Arrays.toString方法
- *
- * @param obj 对象
+ *
+ * @param obj 对象
* @param charset 字符集
* @return 字符串
*/
- public static String str(Object obj, Charset charset)
- {
- if (null == obj)
- {
+ public static String str(Object obj, Charset charset) {
+ if (null == obj) {
return null;
}
- if (obj instanceof String)
- {
+ if (obj instanceof String) {
return (String) obj;
- }
- else if (obj instanceof byte[] || obj instanceof Byte[])
- {
- if (obj instanceof byte[])
- {
+ } else if (obj instanceof byte[] || obj instanceof Byte[]) {
+ if (obj instanceof byte[]) {
return str((byte[]) obj, charset);
- }
- else
- {
+ } else {
Byte[] bytes = (Byte[]) obj;
int length = bytes.length;
byte[] dest = new byte[length];
- for (int i = 0; i < length; i++)
- {
+ for (int i = 0; i < length; i++) {
dest[i] = bytes[i];
}
return str(dest, charset);
}
- }
- else if (obj instanceof ByteBuffer)
- {
+ } else if (obj instanceof ByteBuffer) {
return str((ByteBuffer) obj, charset);
}
return obj.toString();
@@ -822,32 +695,28 @@ public class Convert
/**
* 将byte数组转为字符串
- *
- * @param bytes byte数组
+ *
+ * @param bytes byte数组
* @param charset 字符集
* @return 字符串
*/
- public static String str(byte[] bytes, String charset)
- {
+ public static String str(byte[] bytes, String charset) {
return str(bytes, StringUtils.isEmpty(charset) ? Charset.defaultCharset() : Charset.forName(charset));
}
/**
* 解码字节码
- *
- * @param data 字符串
+ *
+ * @param data 字符串
* @param charset 字符集,如果此字段为空,则解码的结果取决于平台
* @return 解码后的字符串
*/
- public static String str(byte[] data, Charset charset)
- {
- if (data == null)
- {
+ public static String str(byte[] data, Charset charset) {
+ if (data == null) {
return null;
}
- if (null == charset)
- {
+ if (null == charset) {
return new String(data);
}
return new String(data, charset);
@@ -855,15 +724,13 @@ public class Convert
/**
* 将编码的byteBuffer数据转换为字符串
- *
- * @param data 数据
+ *
+ * @param data 数据
* @param charset 字符集,如果为空使用当前系统字符集
* @return 字符串
*/
- public static String str(ByteBuffer data, String charset)
- {
- if (data == null)
- {
+ public static String str(ByteBuffer data, String charset) {
+ if (data == null) {
return null;
}
@@ -872,56 +739,48 @@ public class Convert
/**
* 将编码的byteBuffer数据转换为字符串
- *
- * @param data 数据
+ *
+ * @param data 数据
* @param charset 字符集,如果为空使用当前系统字符集
* @return 字符串
*/
- public static String str(ByteBuffer data, Charset charset)
- {
- if (null == charset)
- {
+ public static String str(ByteBuffer data, Charset charset) {
+ if (null == charset) {
charset = Charset.defaultCharset();
}
return charset.decode(data).toString();
}
// ----------------------------------------------------------------------- 全角半角转换
+
/**
* 半角转全角
- *
+ *
* @param input String.
* @return 全角字符串.
*/
- public static String toSBC(String input)
- {
- return toSBC(input, null);
+ public static String tosbc(String input) {
+ return tosbc(input, null);
}
/**
* 半角转全角
- *
- * @param input String
+ *
+ * @param input String
* @param notConvertSet 不替换的字符集合
* @return 全角字符串.
*/
- public static String toSBC(String input, Set notConvertSet)
- {
- char c[] = input.toCharArray();
- for (int i = 0; i < c.length; i++)
- {
- if (null != notConvertSet && notConvertSet.contains(c[i]))
- {
+ public static String tosbc(String input, Set notConvertSet) {
+ char[] c = input.toCharArray();
+ for (int i = 0; i < c.length; i++) {
+ if (null != notConvertSet && notConvertSet.contains(c[i])) {
// 跳过不替换的字符
continue;
}
- if (c[i] == ' ')
- {
+ if (c[i] == ' ') {
c[i] = '\u3000';
- }
- else if (c[i] < '\177')
- {
+ } else if (c[i] < '\177') {
c[i] = (char) (c[i] + 65248);
}
@@ -931,39 +790,32 @@ public class Convert
/**
* 全角转半角
- *
+ *
* @param input String.
* @return 半角字符串
*/
- public static String toDBC(String input)
- {
- return toDBC(input, null);
+ public static String todbc(String input) {
+ return todbc(input, null);
}
/**
* 替换全角为半角
- *
- * @param text 文本
+ *
+ * @param text 文本
* @param notConvertSet 不替换的字符集合
* @return 替换后的字符
*/
- public static String toDBC(String text, Set notConvertSet)
- {
- char c[] = text.toCharArray();
- for (int i = 0; i < c.length; i++)
- {
- if (null != notConvertSet && notConvertSet.contains(c[i]))
- {
+ public static String todbc(String text, Set notConvertSet) {
+ char[] c = text.toCharArray();
+ for (int i = 0; i < c.length; i++) {
+ if (null != notConvertSet && notConvertSet.contains(c[i])) {
// 跳过不替换的字符
continue;
}
- if (c[i] == '\u3000')
- {
+ if (c[i] == '\u3000') {
c[i] = ' ';
- }
- else if (c[i] > '\uFF00' && c[i] < '\uFF5F')
- {
+ } else if (c[i] > '\uFF00' && c[i] < '\uFF5F') {
c[i] = (char) (c[i] - 65248);
}
}
@@ -974,35 +826,30 @@ public class Convert
/**
* 数字金额大写转换 先写个完整的然后将如零拾替换成零
- *
+ *
* @param n 数字
* @return 中文大写数字
*/
- public static String digitUppercase(double n)
- {
- String[] fraction = { "角", "分" };
- String[] digit = { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
- String[][] unit = { { "元", "万", "亿" }, { "", "拾", "佰", "仟" } };
+ public static String digitUppercase(double n) {
+ String[] fraction = {"角", "分"};
+ String[] digit = {"零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖"};
+ String[][] unit = {{"元", "万", "亿"}, {"", "拾", "佰", "仟"}};
String head = n < 0 ? "负" : "";
n = Math.abs(n);
String s = "";
- for (int i = 0; i < fraction.length; i++)
- {
+ for (int i = 0; i < fraction.length; i++) {
s += (digit[(int) (Math.floor(n * 10 * Math.pow(10, i)) % 10)] + fraction[i]).replaceAll("(零.)+", "");
}
- if (s.length() < 1)
- {
+ if (s.length() < 1) {
s = "整";
}
int integerPart = (int) Math.floor(n);
- for (int i = 0; i < unit[0].length && integerPart > 0; i++)
- {
+ for (int i = 0; i < unit[0].length && integerPart > 0; i++) {
String p = "";
- for (int j = 0; j < unit[1].length && n > 0; j++)
- {
+ for (int j = 0; j < unit[1].length && n > 0; j++) {
p = digit[integerPart % 10] + unit[1][j] + p;
integerPart = integerPart / 10;
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/StrFormatter.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/StrFormatter.java
index a7d4d84c..cf4f6e23 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/StrFormatter.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/text/StrFormatter.java
@@ -4,11 +4,10 @@ import com.ruoyi.common.core.utils.StringUtils;
/**
* 字符串格式化
- *
+ *
* @author ruoyi
*/
-public class StrFormatter
-{
+public class StrFormatter {
public static final String EMPTY_JSON = "{}";
public static final char C_BACKSLASH = '\\';
public static final char C_DELIM_START = '{';
@@ -22,15 +21,13 @@ public class StrFormatter
* 通常使用:format("this is {} for {}", "a", "b") -> this is a for b
* 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a
* 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b
- *
+ *
* @param strPattern 字符串模板
- * @param argArray 参数列表
+ * @param argArray 参数列表
* @return 结果
*/
- public static String format(final String strPattern, final Object... argArray)
- {
- if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray))
- {
+ public static String format(final String strPattern, final Object... argArray) {
+ if (StringUtils.isEmpty(strPattern) || StringUtils.isEmpty(argArray)) {
return strPattern;
}
final int strPatternLength = strPattern.length();
@@ -40,43 +37,30 @@ public class StrFormatter
int handledPosition = 0;
int delimIndex;// 占位符所在位置
- for (int argIndex = 0; argIndex < argArray.length; argIndex++)
- {
+ for (int argIndex = 0; argIndex < argArray.length; argIndex++) {
delimIndex = strPattern.indexOf(EMPTY_JSON, handledPosition);
- if (delimIndex == -1)
- {
- if (handledPosition == 0)
- {
+ if (delimIndex == -1) {
+ if (handledPosition == 0) {
return strPattern;
- }
- else
- { // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果
+ } else { // 字符串模板剩余部分不再包含占位符,加入剩余部分后返回结果
sbuf.append(strPattern, handledPosition, strPatternLength);
return sbuf.toString();
}
- }
- else
- {
- if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH)
- {
- if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH)
- {
+ } else {
+ if (delimIndex > 0 && strPattern.charAt(delimIndex - 1) == C_BACKSLASH) {
+ if (delimIndex > 1 && strPattern.charAt(delimIndex - 2) == C_BACKSLASH) {
// 转义符之前还有一个转义符,占位符依旧有效
sbuf.append(strPattern, handledPosition, delimIndex - 1);
sbuf.append(Convert.utf8Str(argArray[argIndex]));
handledPosition = delimIndex + 2;
- }
- else
- {
+ } else {
// 占位符被转义
argIndex--;
sbuf.append(strPattern, handledPosition, delimIndex - 1);
sbuf.append(C_DELIM_START);
handledPosition = delimIndex + 1;
}
- }
- else
- {
+ } else {
// 正常占位符
sbuf.append(strPattern, handledPosition, delimIndex);
sbuf.append(Convert.utf8Str(argArray[argIndex]));
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java
index 9cbb459b..bec3d5d8 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/DateUtils.java
@@ -1,23 +1,19 @@
package com.ruoyi.common.core.utils;
+import org.apache.commons.lang3.time.DateFormatUtils;
+
import java.lang.management.ManagementFactory;
import java.text.ParseException;
import java.text.SimpleDateFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.ZoneId;
-import java.time.ZonedDateTime;
+import java.time.*;
import java.util.Date;
-import org.apache.commons.lang3.time.DateFormatUtils;
/**
* 时间工具类
*
* @author ruoyi
*/
-public class DateUtils extends org.apache.commons.lang3.time.DateUtils
-{
+public class DateUtils extends org.apache.commons.lang3.time.DateUtils {
public static String YYYY = "yyyy";
public static String YYYY_MM = "yyyy-MM";
@@ -38,8 +34,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
*
* @return Date() 当前日期
*/
- public static Date getNowDate()
- {
+ public static Date getNowDate() {
return new Date();
}
@@ -48,44 +43,34 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
*
* @return String
*/
- public static String getDate()
- {
+ public static String getDate() {
return dateTimeNow(YYYY_MM_DD);
}
- public static final String getTime()
- {
+ public static final String getTime() {
return dateTimeNow(YYYY_MM_DD_HH_MM_SS);
}
- public static final String dateTimeNow()
- {
+ public static final String dateTimeNow() {
return dateTimeNow(YYYYMMDDHHMMSS);
}
- public static final String dateTimeNow(final String format)
- {
+ public static final String dateTimeNow(final String format) {
return parseDateToStr(format, new Date());
}
- public static final String dateTime(final Date date)
- {
+ public static final String dateTime(final Date date) {
return parseDateToStr(YYYY_MM_DD, date);
}
- public static final String parseDateToStr(final String format, final Date date)
- {
+ public static final String parseDateToStr(final String format, final Date date) {
return new SimpleDateFormat(format).format(date);
}
- public static final Date dateTime(final String format, final String ts)
- {
- try
- {
+ public static final Date dateTime(final String format, final String ts) {
+ try {
return new SimpleDateFormat(format).parse(ts);
- }
- catch (ParseException e)
- {
+ } catch (ParseException e) {
throw new RuntimeException(e);
}
}
@@ -93,8 +78,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* 日期路径 即年/月/日 如2018/08/08
*/
- public static final String datePath()
- {
+ public static final String datePath() {
Date now = new Date();
return DateFormatUtils.format(now, "yyyy/MM/dd");
}
@@ -102,8 +86,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* 日期路径 即年/月/日 如20180808
*/
- public static final String dateTime()
- {
+ public static final String dateTime() {
Date now = new Date();
return DateFormatUtils.format(now, "yyyyMMdd");
}
@@ -111,18 +94,13 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* 日期型字符串转化为日期 格式
*/
- public static Date parseDate(Object str)
- {
- if (str == null)
- {
+ public static Date parseDate(Object str) {
+ if (str == null) {
return null;
}
- try
- {
+ try {
return parseDate(str.toString(), parsePatterns);
- }
- catch (ParseException e)
- {
+ } catch (ParseException e) {
return null;
}
}
@@ -130,8 +108,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* 获取服务器启动时间
*/
- public static Date getServerStartDate()
- {
+ public static Date getServerStartDate() {
long time = ManagementFactory.getRuntimeMXBean().getStartTime();
return new Date(time);
}
@@ -139,8 +116,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* 计算两个时间差
*/
- public static String getDatePoor(Date endDate, Date nowDate)
- {
+ public static String getDatePoor(Date endDate, Date nowDate) {
long nd = 1000 * 24 * 60 * 60;
long nh = 1000 * 60 * 60;
long nm = 1000 * 60;
@@ -161,8 +137,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* 增加 LocalDateTime ==> Date
*/
- public static Date toDate(LocalDateTime temporalAccessor)
- {
+ public static Date toDate(LocalDateTime temporalAccessor) {
ZonedDateTime zdt = temporalAccessor.atZone(ZoneId.systemDefault());
return Date.from(zdt.toInstant());
}
@@ -170,8 +145,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
/**
* 增加 LocalDate ==> Date
*/
- public static Date toDate(LocalDate temporalAccessor)
- {
+ public static Date toDate(LocalDate temporalAccessor) {
LocalDateTime localDateTime = LocalDateTime.of(temporalAccessor, LocalTime.of(0, 0, 0));
ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
return Date.from(zdt.toInstant());
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java
index f75e5597..44f3f360 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java
@@ -1,37 +1,33 @@
package com.ruoyi.common.core.utils;
+import org.apache.commons.lang3.exception.ExceptionUtils;
+
import java.io.PrintWriter;
import java.io.StringWriter;
-import org.apache.commons.lang3.exception.ExceptionUtils;
/**
* 错误信息处理类。
*
* @author ruoyi
*/
-public class ExceptionUtil
-{
+public class ExceptionUtil {
/**
* 获取exception的详细错误信息。
*/
- public static String getExceptionMessage(Throwable e)
- {
+ public static String getExceptionMessage(Throwable e) {
StringWriter sw = new StringWriter();
e.printStackTrace(new PrintWriter(sw, true));
return sw.toString();
}
- public static String getRootErrorMessage(Exception e)
- {
+ public static String getRootErrorMessage(Exception e) {
Throwable root = ExceptionUtils.getRootCause(e);
root = (root == null ? e : root);
- if (root == null)
- {
+ if (root == null) {
return "";
}
String msg = root.getMessage();
- if (msg == null)
- {
+ if (msg == null) {
return "null";
}
return StringUtils.defaultString(msg);
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java
index abe93c0c..29d20d8f 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/JwtUtils.java
@@ -1,6 +1,5 @@
package com.ruoyi.common.core.utils;
-import java.util.Map;
import com.ruoyi.common.core.constant.SecurityConstants;
import com.ruoyi.common.core.constant.TokenConstants;
import com.ruoyi.common.core.text.Convert;
@@ -8,13 +7,14 @@ import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
+import java.util.Map;
+
/**
* Jwt工具类
*
* @author ruoyi
*/
-public class JwtUtils
-{
+public class JwtUtils {
public static String secret = TokenConstants.SECRET;
/**
@@ -23,8 +23,7 @@ public class JwtUtils
* @param claims 数据声明
* @return 令牌
*/
- public static String createToken(Map claims)
- {
+ public static String createToken(Map claims) {
String token = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS512, secret).compact();
return token;
}
@@ -35,89 +34,81 @@ public class JwtUtils
* @param token 令牌
* @return 数据声明
*/
- public static Claims parseToken(String token)
- {
+ public static Claims parseToken(String token) {
return Jwts.parser().setSigningKey(secret).parseClaimsJws(token).getBody();
}
/**
* 根据令牌获取用户标识
- *
+ *
* @param token 令牌
* @return 用户ID
*/
- public static String getUserKey(String token)
- {
+ public static String getUserKey(String token) {
Claims claims = parseToken(token);
return getValue(claims, SecurityConstants.USER_KEY);
}
/**
* 根据令牌获取用户标识
- *
+ *
* @param claims 身份信息
* @return 用户ID
*/
- public static String getUserKey(Claims claims)
- {
+ public static String getUserKey(Claims claims) {
return getValue(claims, SecurityConstants.USER_KEY);
}
/**
* 根据令牌获取用户ID
- *
+ *
* @param token 令牌
* @return 用户ID
*/
- public static String getUserId(String token)
- {
+ public static String getUserId(String token) {
Claims claims = parseToken(token);
return getValue(claims, SecurityConstants.DETAILS_USER_ID);
}
/**
* 根据身份信息获取用户ID
- *
+ *
* @param claims 身份信息
* @return 用户ID
*/
- public static String getUserId(Claims claims)
- {
+ public static String getUserId(Claims claims) {
return getValue(claims, SecurityConstants.DETAILS_USER_ID);
}
/**
* 根据令牌获取用户名
- *
+ *
* @param token 令牌
* @return 用户名
*/
- public static String getUserName(String token)
- {
+ public static String getUserName(String token) {
Claims claims = parseToken(token);
return getValue(claims, SecurityConstants.DETAILS_USERNAME);
}
/**
* 根据身份信息获取用户名
- *
+ *
* @param claims 身份信息
* @return 用户名
*/
- public static String getUserName(Claims claims)
- {
+ public static String getUserName(Claims claims) {
return getValue(claims, SecurityConstants.DETAILS_USERNAME);
}
/**
* 根据身份信息获取键值
- *
+ *
* @param claims 身份信息
- * @param key 键
+ * @param key 键
* @return 值
*/
- public static String getValue(Claims claims, String key)
- {
+ public static String getValue(Claims claims, String key) {
return Convert.toStr(claims.get(key), "");
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java
index 95ee25b3..a7dc61ec 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/PageUtils.java
@@ -7,16 +7,14 @@ import com.ruoyi.common.core.web.page.TableSupport;
/**
* 分页工具类
- *
+ *
* @author ruoyi
*/
-public class PageUtils extends PageHelper
-{
+public class PageUtils extends PageHelper {
/**
* 设置请求分页数据
*/
- public static void startPage()
- {
+ public static void startPage() {
PageDomain pageDomain = TableSupport.buildPageRequest();
Integer pageNum = pageDomain.getPageNum();
Integer pageSize = pageDomain.getPageSize();
@@ -28,8 +26,7 @@ public class PageUtils extends PageHelper
/**
* 清理分页的线程变量
*/
- public static void clearPage()
- {
+ public static void clearPage() {
PageHelper.clearPage();
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ReUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ReUtil.java
index 466d14fe..447f46da 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ReUtil.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ReUtil.java
@@ -1,5 +1,7 @@
package com.ruoyi.common.core.utils;
+import com.ruoyi.common.core.text.Convert;
+
import java.util.Arrays;
import java.util.Collection;
import java.util.HashSet;
@@ -7,18 +9,18 @@ import java.util.Set;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import com.ruoyi.common.core.text.Convert;
-import com.ruoyi.common.core.utils.StringUtils;
-
-public class ReUtil
-{
+/**
+ * @author pan
+ */
+public class ReUtil {
public final static Pattern GROUP_VAR = Pattern.compile("\\$(\\d+)");
/**
* 正则中需要被转义的关键字
*/
public final static Set RE_KEYS = new HashSet<>(
- Arrays.asList('$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', '{', '}', '|'));;
+ Arrays.asList('$', '(', ')', '*', '+', '.', '[', ']', '?', '\\', '^', '{', '}', '|'));
+ ;
/**
* 正则替换指定值
@@ -33,13 +35,12 @@ public class ReUtil
* 结果:中文(1234)
*
*
- * @param content 文本
- * @param regex 正则
+ * @param content 文本
+ * @param regex 正则
* @param replacementTemplate 替换的文本模板,可以使用$1类似的变量提取正则匹配出的内容
* @return 处理后的文本
*/
- public static String replaceAll(CharSequence content, String regex, String replacementTemplate)
- {
+ public static String replaceAll(CharSequence content, String regex, String replacementTemplate) {
final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
return replaceAll(content, pattern, replacementTemplate);
}
@@ -48,30 +49,25 @@ public class ReUtil
* 正则替换指定值
* 通过正则查找到字符串,然后把匹配到的字符串加入到replacementTemplate中,$1表示分组1的字符串
*
- * @param content 文本
- * @param pattern {@link Pattern}
+ * @param content 文本
+ * @param pattern {@link Pattern}
* @param replacementTemplate 替换的文本模板,可以使用$1类似的变量提取正则匹配出的内容
* @return 处理后的文本
* @since 3.0.4
*/
- public static String replaceAll(CharSequence content, Pattern pattern, String replacementTemplate)
- {
- if (StringUtils.isEmpty(content))
- {
+ public static String replaceAll(CharSequence content, Pattern pattern, String replacementTemplate) {
+ if (StringUtils.isEmpty(content)) {
return StringUtils.EMPTY;
}
final Matcher matcher = pattern.matcher(content);
boolean result = matcher.find();
- if (result)
- {
+ if (result) {
final Set varNums = findAll(GROUP_VAR, replacementTemplate, 1, new HashSet<>());
final StringBuffer sb = new StringBuffer();
- do
- {
+ do {
String replacement = replacementTemplate;
- for (String var : varNums)
- {
+ for (String var : varNums) {
int group = Integer.parseInt(var);
replacement = replacement.replace("$" + var, matcher.group(group));
}
@@ -84,33 +80,29 @@ public class ReUtil
}
return Convert.toStr(content);
}
-
+
/**
* 取得内容中匹配的所有结果
*
- * @param 集合类型
- * @param pattern 编译后的正则模式
- * @param content 被查找的内容
- * @param group 正则的分组
+ * @param 集合类型
+ * @param pattern 编译后的正则模式
+ * @param content 被查找的内容
+ * @param group 正则的分组
* @param collection 返回的集合类型
* @return 结果集
*/
public static > T findAll(Pattern pattern, CharSequence content, int group,
- T collection)
- {
- if (null == pattern || null == content)
- {
+ T collection) {
+ if (null == pattern || null == content) {
return null;
}
- if (null == collection)
- {
+ if (null == collection) {
throw new NullPointerException("Null collection param provided!");
}
final Matcher matcher = pattern.matcher(content);
- while (matcher.find())
- {
+ while (matcher.find()) {
collection.add(matcher.group(group));
}
return collection;
@@ -122,11 +114,9 @@ public class ReUtil
* @param c 字符
* @return 转义后的文本
*/
- public static String escape(char c)
- {
+ public static String escape(char c) {
final StringBuilder builder = new StringBuilder();
- if (RE_KEYS.contains(c))
- {
+ if (RE_KEYS.contains(c)) {
builder.append('\\');
}
builder.append(c);
@@ -139,21 +129,17 @@ public class ReUtil
* @param content 文本
* @return 转义后的文本
*/
- public static String escape(CharSequence content)
- {
- if (StringUtils.isBlank(content))
- {
+ public static String escape(CharSequence content) {
+ if (StringUtils.isBlank(content)) {
return StringUtils.EMPTY;
}
final StringBuilder builder = new StringBuilder();
int len = content.length();
char current;
- for (int i = 0; i < len; i++)
- {
+ for (int i = 0; i < len; i++) {
current = content.charAt(i);
- if (RE_KEYS.contains(current))
- {
+ if (RE_KEYS.contains(current)) {
builder.append('\\');
}
builder.append(current);
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java
index be2817c9..94dc1727 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java
@@ -1,15 +1,9 @@
package com.ruoyi.common.core.utils;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
-import java.net.URLEncoder;
-import java.util.Enumeration;
-import java.util.LinkedHashMap;
-import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import com.alibaba.fastjson.JSONObject;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.domain.Rust;
+import com.ruoyi.common.core.text.Convert;
import org.springframework.core.io.buffer.DataBuffer;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
@@ -18,78 +12,74 @@ import org.springframework.http.server.reactive.ServerHttpResponse;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
-import com.alibaba.fastjson.JSONObject;
-import com.ruoyi.common.core.constant.Constants;
-import com.ruoyi.common.core.domain.R;
-import com.ruoyi.common.core.text.Convert;
import reactor.core.publisher.Mono;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
+import java.io.IOException;
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
+import java.net.URLEncoder;
+import java.util.Enumeration;
+import java.util.LinkedHashMap;
+import java.util.Map;
+
/**
* 客户端工具类
- *
+ *
* @author ruoyi
*/
-public class ServletUtils
-{
+public class ServletUtils {
/**
* 获取String参数
*/
- public static String getParameter(String name)
- {
+ public static String getParameter(String name) {
return getRequest().getParameter(name);
}
/**
* 获取String参数
*/
- public static String getParameter(String name, String defaultValue)
- {
+ public static String getParameter(String name, String defaultValue) {
return Convert.toStr(getRequest().getParameter(name), defaultValue);
}
/**
* 获取Integer参数
*/
- public static Integer getParameterToInt(String name)
- {
+ public static Integer getParameterToInt(String name) {
return Convert.toInt(getRequest().getParameter(name));
}
/**
* 获取Integer参数
*/
- public static Integer getParameterToInt(String name, Integer defaultValue)
- {
+ public static Integer getParameterToInt(String name, Integer defaultValue) {
return Convert.toInt(getRequest().getParameter(name), defaultValue);
}
/**
* 获取Boolean参数
*/
- public static Boolean getParameterToBool(String name)
- {
+ public static Boolean getParameterToBool(String name) {
return Convert.toBool(getRequest().getParameter(name));
}
/**
* 获取Boolean参数
*/
- public static Boolean getParameterToBool(String name, Boolean defaultValue)
- {
+ public static Boolean getParameterToBool(String name, Boolean defaultValue) {
return Convert.toBool(getRequest().getParameter(name), defaultValue);
}
/**
* 获取request
*/
- public static HttpServletRequest getRequest()
- {
- try
- {
+ public static HttpServletRequest getRequest() {
+ try {
return getRequestAttributes().getRequest();
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return null;
}
}
@@ -97,14 +87,10 @@ public class ServletUtils
/**
* 获取response
*/
- public static HttpServletResponse getResponse()
- {
- try
- {
+ public static HttpServletResponse getResponse() {
+ try {
return getRequestAttributes().getResponse();
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return null;
}
}
@@ -112,42 +98,32 @@ public class ServletUtils
/**
* 获取session
*/
- public static HttpSession getSession()
- {
+ public static HttpSession getSession() {
return getRequest().getSession();
}
- public static ServletRequestAttributes getRequestAttributes()
- {
- try
- {
+ public static ServletRequestAttributes getRequestAttributes() {
+ try {
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
return (ServletRequestAttributes) attributes;
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
return null;
}
}
- public static String getHeader(HttpServletRequest request, String name)
- {
+ public static String getHeader(HttpServletRequest request, String name) {
String value = request.getHeader(name);
- if (StringUtils.isEmpty(value))
- {
+ if (StringUtils.isEmpty(value)) {
return StringUtils.EMPTY;
}
return urlDecode(value);
}
- public static Map getHeaders(HttpServletRequest request)
- {
+ public static Map getHeaders(HttpServletRequest request) {
Map map = new LinkedHashMap<>();
Enumeration enumeration = request.getHeaderNames();
- if (enumeration != null)
- {
- while (enumeration.hasMoreElements())
- {
+ if (enumeration != null) {
+ while (enumeration.hasMoreElements()) {
String key = enumeration.nextElement();
String value = request.getHeader(key);
map.put(key, value);
@@ -158,47 +134,39 @@ public class ServletUtils
/**
* 将字符串渲染到客户端
- *
+ *
* @param response 渲染对象
- * @param string 待渲染的字符串
+ * @param string 待渲染的字符串
*/
- public static void renderString(HttpServletResponse response, String string)
- {
- try
- {
+ public static void renderString(HttpServletResponse response, String string) {
+ try {
response.setStatus(200);
response.setContentType("application/json");
response.setCharacterEncoding("utf-8");
response.getWriter().print(string);
- }
- catch (IOException e)
- {
+ } catch (IOException e) {
e.printStackTrace();
}
}
/**
* 是否是Ajax异步请求
- *
+ *
* @param request
*/
- public static boolean isAjaxRequest(HttpServletRequest request)
- {
+ public static boolean isAjaxRequest(HttpServletRequest request) {
String accept = request.getHeader("accept");
- if (accept != null && accept.contains("application/json"))
- {
+ if (accept != null && accept.contains(StringUtils.ACCEPT_JSON)) {
return true;
}
String xRequestedWith = request.getHeader("X-Requested-With");
- if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest"))
- {
+ if (xRequestedWith != null && xRequestedWith.contains(StringUtils.XML_HTTP)) {
return true;
}
String uri = request.getRequestURI();
- if (StringUtils.inStringIgnoreCase(uri, ".json", ".xml"))
- {
+ if (StringUtils.inStringIgnoreCase(uri, StringUtils.DOT + StringUtils.JSON, StringUtils.DOT + StringUtils.XML)) {
return true;
}
@@ -208,36 +176,28 @@ public class ServletUtils
/**
* 内容编码
- *
+ *
* @param str 内容
* @return 编码后的内容
*/
- public static String urlEncode(String str)
- {
- try
- {
+ public static String urlEncode(String str) {
+ try {
return URLEncoder.encode(str, Constants.UTF8);
- }
- catch (UnsupportedEncodingException e)
- {
+ } catch (UnsupportedEncodingException e) {
return StringUtils.EMPTY;
}
}
/**
* 内容解码
- *
+ *
* @param str 内容
* @return 解码后的内容
*/
- public static String urlDecode(String str)
- {
- try
- {
+ public static String urlDecode(String str) {
+ try {
return URLDecoder.decode(str, Constants.UTF8);
- }
- catch (UnsupportedEncodingException e)
- {
+ } catch (UnsupportedEncodingException e) {
return StringUtils.EMPTY;
}
}
@@ -246,24 +206,22 @@ public class ServletUtils
* 设置webflux模型响应
*
* @param response ServerHttpResponse
- * @param value 响应内容
+ * @param value 响应内容
* @return Mono
*/
- public static Mono webFluxResponseWriter(ServerHttpResponse response, Object value)
- {
- return webFluxResponseWriter(response, HttpStatus.OK, value, R.FAIL);
+ public static Mono webFluxResponseWriter(ServerHttpResponse response, Object value) {
+ return webFluxResponseWriter(response, HttpStatus.OK, value, Rust.FAIL);
}
/**
* 设置webflux模型响应
*
* @param response ServerHttpResponse
- * @param code 响应状态码
- * @param value 响应内容
+ * @param code 响应状态码
+ * @param value 响应内容
* @return Mono
*/
- public static Mono webFluxResponseWriter(ServerHttpResponse response, Object value, int code)
- {
+ public static Mono webFluxResponseWriter(ServerHttpResponse response, Object value, int code) {
return webFluxResponseWriter(response, HttpStatus.OK, value, code);
}
@@ -271,31 +229,29 @@ public class ServletUtils
* 设置webflux模型响应
*
* @param response ServerHttpResponse
- * @param status http状态码
- * @param code 响应状态码
- * @param value 响应内容
+ * @param status http状态码
+ * @param code 响应状态码
+ * @param value 响应内容
* @return Mono
*/
- public static Mono webFluxResponseWriter(ServerHttpResponse response, HttpStatus status, Object value, int code)
- {
+ public static Mono webFluxResponseWriter(ServerHttpResponse response, HttpStatus status, Object value, int code) {
return webFluxResponseWriter(response, MediaType.APPLICATION_JSON_VALUE, status, value, code);
}
/**
* 设置webflux模型响应
*
- * @param response ServerHttpResponse
+ * @param response ServerHttpResponse
* @param contentType content-type
- * @param status http状态码
- * @param code 响应状态码
- * @param value 响应内容
+ * @param status http状态码
+ * @param code 响应状态码
+ * @param value 响应内容
* @return Mono
*/
- public static Mono webFluxResponseWriter(ServerHttpResponse response, String contentType, HttpStatus status, Object value, int code)
- {
+ public static Mono webFluxResponseWriter(ServerHttpResponse response, String contentType, HttpStatus status, Object value, int code) {
response.setStatusCode(status);
response.getHeaders().add(HttpHeaders.CONTENT_TYPE, contentType);
- R> result = R.fail(code, value.toString());
+ Rust> result = Rust.fail(code, value.toString());
DataBuffer dataBuffer = response.bufferFactory().wrap(JSONObject.toJSONString(result).getBytes());
return response.writeWith(Mono.just(dataBuffer));
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpringUtils.java
index 9dcbceb1..c253d47c 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpringUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/SpringUtils.java
@@ -9,32 +9,25 @@ import org.springframework.stereotype.Component;
/**
* spring工具类 方便在非spring管理环境中获取bean
- *
+ *
* @author ruoyi
*/
@Component
-public final class SpringUtils implements BeanFactoryPostProcessor
-{
- /** Spring应用上下文环境 */
+public final class SpringUtils implements BeanFactoryPostProcessor {
+ /**
+ * Spring应用上下文环境
+ */
private static ConfigurableListableBeanFactory beanFactory;
- @Override
- public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException
- {
- SpringUtils.beanFactory = beanFactory;
- }
-
/**
* 获取对象
*
* @param name
* @return Object 一个以所给名字注册的bean的实例
* @throws org.springframework.beans.BeansException
- *
*/
@SuppressWarnings("unchecked")
- public static T getBean(String name) throws BeansException
- {
+ public static T getBean(String name) throws BeansException {
return (T) beanFactory.getBean(name);
}
@@ -44,10 +37,8 @@ public final class SpringUtils implements BeanFactoryPostProcessor
* @param clz
* @return
* @throws org.springframework.beans.BeansException
- *
*/
- public static T getBean(Class clz) throws BeansException
- {
+ public static T getBean(Class clz) throws BeansException {
T result = (T) beanFactory.getBean(clz);
return result;
}
@@ -58,8 +49,7 @@ public final class SpringUtils implements BeanFactoryPostProcessor
* @param name
* @return boolean
*/
- public static boolean containsBean(String name)
- {
+ public static boolean containsBean(String name) {
return beanFactory.containsBean(name);
}
@@ -69,10 +59,8 @@ public final class SpringUtils implements BeanFactoryPostProcessor
* @param name
* @return boolean
* @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);
}
@@ -80,10 +68,8 @@ public final class SpringUtils implements BeanFactoryPostProcessor
* @param name
* @return Class 注册对象的类型
* @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);
}
@@ -93,22 +79,24 @@ public final class SpringUtils implements BeanFactoryPostProcessor
* @param name
* @return
* @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);
}
/**
* 获取aop代理对象
- *
+ *
* @param invoker
* @return
*/
@SuppressWarnings("unchecked")
- public static T getAopProxy(T invoker)
- {
+ public static T getAopProxy(T invoker) {
return (T) AopContext.currentProxy();
}
+
+ @Override
+ public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
+ SpringUtils.beanFactory = beanFactory;
+ }
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
index 562a3482..ed114f5c 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/StringUtils.java
@@ -1,190 +1,276 @@
package com.ruoyi.common.core.utils;
+import com.ruoyi.common.core.constant.Constants;
+import com.ruoyi.common.core.text.StrFormatter;
+import org.springframework.util.AntPathMatcher;
+
import java.util.Collection;
import java.util.List;
import java.util.Map;
-import org.springframework.util.AntPathMatcher;
-import com.ruoyi.common.core.constant.Constants;
-import com.ruoyi.common.core.text.StrFormatter;
/**
* 字符串工具类
- *
+ *
* @author ruoyi
*/
-public class StringUtils extends org.apache.commons.lang3.StringUtils
-{
- /** 空字符串 */
- private static final String NULLSTR = "";
+public class StringUtils extends org.apache.commons.lang3.StringUtils {
+ /**
+ * 空字符串
+ */
+ public static final String NULLSTR = "";
+ /**
+ * 空格字符串
+ */
+ public static final String BLANK_SPACE = " ";
+ /**
+ * 斜杠字符串
+ */
+ public static final String SLASH = "/";
+ /**
+ * 井号字符串
+ */
+ public static final String WELL_NO = "#";
+ /**
+ * 点字符串
+ */
+ public static final String DOT = ".";
+ /**
+ * 逗号符串
+ */
+ public static final String COMMA = ",";
+ /**
+ * (符串
+ */
+ public static final String LEFT_BRACKETS = "(";
+ /**
+ * get字符串
+ */
+ public static final String GET = "GET";
+ /**
+ * POST字符串
+ */
+ public static final String POST = "POST";
+ /**
+ * DELETE字符串
+ */
+ public static final String DELETE = "DELETE";
+ /**
+ * 前端排序字符串
+ */
+ public static final String ASC_ENDING = "ascending";
+ /**
+ * 前端排序字符串
+ */
+ public static final String DESC_ENDING = "descending";
+ /**
+ * true字符串
+ */
+ public static final String TRUE = "true";
+ /**
+ * registerUser字符串
+ */
+ public static final String SYS_ACCOUNT_USER = "sys.account.registerUser";
+ /**
+ * char字符串
+ */
+ public static final String CHAR = "char";
+ /**
+ * math字符串
+ */
+ public static final String MATH = "math";
+ /**
+ * JPG字符串
+ */
+ public static final String JPG = "JPG";
+ /**
+ * PNG字符串
+ */
+ public static final String PNG = "PNG";
+ /**
+ * 注:字符串
+ */
+ public static final String NOTE = "注:";
+ /**
+ * MSIE字符串
+ */
+ public static final String MSIE = "MSIE";
+ /**
+ * Firefox字符串
+ */
+ public static final String FIREFOX = "Firefox";
+ /**
+ * Chrome字符串
+ */
+ public static final String CHROME = "Chrome";
+ /**
+ * json字符串
+ */
+ public static final String ACCEPT_JSON = "application/json";
+ /**
+ * XMLHttpRequest字符串
+ */
+ public static final String XML_HTTP = "XMLHttpRequest";
+ /**
+ * json字符串
+ */
+ public static final String JSON = "json";
+ /**
+ * xml字符串
+ */
+ public static final String XML = "xml";
- /** 下划线 */
- private static final char SEPARATOR = '_';
+ /**
+ * 下划线
+ */
+ public static final char SEPARATOR = '_';
/**
* 获取参数不为空值
- *
+ *
* @param value defaultValue 要判断的value
* @return value 返回值
*/
- public static T nvl(T value, T defaultValue)
- {
+ public static T nvl(T value, T defaultValue) {
return value != null ? value : defaultValue;
}
/**
* * 判断一个Collection是否为空, 包含List,Set,Queue
- *
+ *
* @param coll 要判断的Collection
* @return true:为空 false:非空
*/
- public static boolean isEmpty(Collection> coll)
- {
+ public static boolean isEmpty(Collection> coll) {
return isNull(coll) || coll.isEmpty();
}
/**
* * 判断一个Collection是否非空,包含List,Set,Queue
- *
+ *
* @param coll 要判断的Collection
* @return true:非空 false:空
*/
- public static boolean isNotEmpty(Collection> coll)
- {
+ public static boolean isNotEmpty(Collection> coll) {
return !isEmpty(coll);
}
/**
* * 判断一个对象数组是否为空
- *
+ *
* @param objects 要判断的对象数组
- ** @return true:为空 false:非空
+ * * @return true:为空 false:非空
*/
- public static boolean isEmpty(Object[] objects)
- {
+ public static boolean isEmpty(Object[] objects) {
return isNull(objects) || (objects.length == 0);
}
/**
* * 判断一个对象数组是否非空
- *
+ *
* @param objects 要判断的对象数组
* @return true:非空 false:空
*/
- public static boolean isNotEmpty(Object[] objects)
- {
+ public static boolean isNotEmpty(Object[] objects) {
return !isEmpty(objects);
}
/**
* * 判断一个Map是否为空
- *
+ *
* @param map 要判断的Map
* @return true:为空 false:非空
*/
- public static boolean isEmpty(Map, ?> map)
- {
+ public static boolean isEmpty(Map, ?> map) {
return isNull(map) || map.isEmpty();
}
/**
* * 判断一个Map是否为空
- *
+ *
* @param map 要判断的Map
* @return true:非空 false:空
*/
- public static boolean isNotEmpty(Map, ?> map)
- {
+ public static boolean isNotEmpty(Map, ?> map) {
return !isEmpty(map);
}
/**
* * 判断一个字符串是否为空串
- *
+ *
* @param str String
* @return true:为空 false:非空
*/
- public static boolean isEmpty(String str)
- {
+ public static boolean isEmpty(String str) {
return isNull(str) || NULLSTR.equals(str.trim());
}
/**
* * 判断一个字符串是否为非空串
- *
+ *
* @param str String
* @return true:非空串 false:空串
*/
- public static boolean isNotEmpty(String str)
- {
+ public static boolean isNotEmpty(String str) {
return !isEmpty(str);
}
/**
* * 判断一个对象是否为空
- *
+ *
* @param object Object
* @return true:为空 false:非空
*/
- public static boolean isNull(Object object)
- {
+ public static boolean isNull(Object object) {
return object == null;
}
/**
* * 判断一个对象是否非空
- *
+ *
* @param object Object
* @return true:非空 false:空
*/
- public static boolean isNotNull(Object object)
- {
+ public static boolean isNotNull(Object object) {
return !isNull(object);
}
/**
* * 判断一个对象是否是数组类型(Java基本型别的数组)
- *
+ *
* @param object 对象
* @return true:是数组 false:不是数组
*/
- public static boolean isArray(Object object)
- {
+ public static boolean isArray(Object object) {
return isNotNull(object) && object.getClass().isArray();
}
/**
* 去空格
*/
- public static String trim(String str)
- {
+ public static String trim(String str) {
return (str == null ? "" : str.trim());
}
/**
* 截取字符串
- *
- * @param str 字符串
+ *
+ * @param str 字符串
* @param start 开始
* @return 结果
*/
- public static String substring(final String str, int start)
- {
- if (str == null)
- {
+ public static String substring(final String str, int start) {
+ if (str == null) {
return NULLSTR;
}
- if (start < 0)
- {
+ if (start < 0) {
start = str.length() + start;
}
- if (start < 0)
- {
+ if (start < 0) {
start = 0;
}
- if (start > str.length())
- {
+ if (start > str.length()) {
return NULLSTR;
}
@@ -193,44 +279,36 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 截取字符串
- *
- * @param str 字符串
+ *
+ * @param str 字符串
* @param start 开始
- * @param end 结束
+ * @param end 结束
* @return 结果
*/
- public static String substring(final String str, int start, int end)
- {
- if (str == null)
- {
+ public static String substring(final String str, int start, int end) {
+ if (str == null) {
return NULLSTR;
}
- if (end < 0)
- {
+ if (end < 0) {
end = str.length() + end;
}
- if (start < 0)
- {
+ if (start < 0) {
start = str.length() + start;
}
- if (end > str.length())
- {
+ if (end > str.length()) {
end = str.length();
}
- if (start > end)
- {
+ if (start > end) {
return NULLSTR;
}
- if (start < 0)
- {
+ if (start < 0) {
start = 0;
}
- if (end < 0)
- {
+ if (end < 0) {
end = 0;
}
@@ -239,22 +317,18 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 判断是否为空,并且不是空白字符
- *
+ *
* @param str 要判断的value
* @return 结果
*/
- public static boolean hasText(String str)
- {
+ public static boolean hasText(String str) {
return (str != null && !str.isEmpty() && containsText(str));
}
- private static boolean containsText(CharSequence str)
- {
+ private static boolean containsText(CharSequence str) {
int strLen = str.length();
- for (int i = 0; i < strLen; i++)
- {
- if (!Character.isWhitespace(str.charAt(i)))
- {
+ for (int i = 0; i < strLen; i++) {
+ if (!Character.isWhitespace(str.charAt(i))) {
return true;
}
}
@@ -269,15 +343,13 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
* 通常使用:format("this is {} for {}", "a", "b") -> this is a for b
* 转义{}: format("this is \\{} for {}", "a", "b") -> this is \{} for a
* 转义\: format("this is \\\\{} for {}", "a", "b") -> this is \a for b
- *
+ *
* @param template 文本模板,被替换的部分用 {} 表示
- * @param params 参数值
+ * @param params 参数值
* @return 格式化后的文本
*/
- public static String format(String template, Object... params)
- {
- if (isEmpty(params) || isEmpty(template))
- {
+ public static String format(String template, Object... params) {
+ if (isEmpty(params) || isEmpty(template)) {
return template;
}
return StrFormatter.format(template, params);
@@ -285,22 +357,19 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 是否为http(s)://开头
- *
+ *
* @param link 链接
* @return 结果
*/
- public static boolean ishttp(String link)
- {
+ public static boolean ishttp(String link) {
return StringUtils.startsWithAny(link, Constants.HTTP, Constants.HTTPS);
}
/**
* 驼峰转下划线命名
*/
- public static String toUnderScoreCase(String str)
- {
- if (str == null)
- {
+ public static String toUnderScoreCase(String str) {
+ if (str == null) {
return null;
}
StringBuilder sb = new StringBuilder();
@@ -310,31 +379,23 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
boolean curreCharIsUpperCase = true;
// 下一字符是否大写
boolean nexteCharIsUpperCase = true;
- for (int i = 0; i < str.length(); i++)
- {
+ for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
- if (i > 0)
- {
+ if (i > 0) {
preCharIsUpperCase = Character.isUpperCase(str.charAt(i - 1));
- }
- else
- {
+ } else {
preCharIsUpperCase = false;
}
curreCharIsUpperCase = Character.isUpperCase(c);
- if (i < (str.length() - 1))
- {
+ if (i < (str.length() - 1)) {
nexteCharIsUpperCase = Character.isUpperCase(str.charAt(i + 1));
}
- if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase)
- {
+ if (preCharIsUpperCase && curreCharIsUpperCase && !nexteCharIsUpperCase) {
sb.append(SEPARATOR);
- }
- else if ((i != 0 && !preCharIsUpperCase) && curreCharIsUpperCase)
- {
+ } else if (i != 0 && !preCharIsUpperCase && curreCharIsUpperCase) {
sb.append(SEPARATOR);
}
sb.append(Character.toLowerCase(c));
@@ -345,19 +406,15 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 是否包含字符串
- *
- * @param str 验证字符串
+ *
+ * @param str 验证字符串
* @param strs 字符串组
* @return 包含返回true
*/
- public static boolean inStringIgnoreCase(String str, String... strs)
- {
- if (str != null && strs != null)
- {
- for (String s : strs)
- {
- if (str.equalsIgnoreCase(trim(s)))
- {
+ public static boolean inStringIgnoreCase(String str, String... strs) {
+ if (str != null && strs != null) {
+ for (String s : strs) {
+ if (str.equalsIgnoreCase(trim(s))) {
return true;
}
}
@@ -367,31 +424,26 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。 例如:HELLO_WORLD->HelloWorld
- *
+ *
* @param name 转换前的下划线大写方式命名的字符串
* @return 转换后的驼峰式命名的字符串
*/
- public static String convertToCamelCase(String name)
- {
+ public static String convertToCamelCase(String name) {
StringBuilder result = new StringBuilder();
+ String underline = "_";
// 快速检查
- if (name == null || name.isEmpty())
- {
+ if (name == null || name.isEmpty()) {
// 没必要转换
return "";
- }
- else if (!name.contains("_"))
- {
+ } else if (!name.contains(underline)) {
// 不含下划线,仅将首字母大写
return name.substring(0, 1).toUpperCase() + name.substring(1);
}
// 用下划线将原始字符串分割
- String[] camels = name.split("_");
- for (String camel : camels)
- {
+ String[] camels = name.split(underline);
+ for (String camel : camels) {
// 跳过原始字符串中开头、结尾的下换线或双重下划线
- if (camel.isEmpty())
- {
+ if (camel.isEmpty()) {
continue;
}
// 首字母大写
@@ -404,30 +456,22 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 驼峰式命名法 例如:user_name->userName
*/
- public static String toCamelCase(String s)
- {
- if (s == null)
- {
+ public static String toCamelCase(String s) {
+ if (s == null) {
return null;
}
s = s.toLowerCase();
StringBuilder sb = new StringBuilder(s.length());
boolean upperCase = false;
- for (int i = 0; i < s.length(); i++)
- {
+ for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
- if (c == SEPARATOR)
- {
+ if (c == SEPARATOR) {
upperCase = true;
- }
- else if (upperCase)
- {
+ } else if (upperCase) {
sb.append(Character.toUpperCase(c));
upperCase = false;
- }
- else
- {
+ } else {
sb.append(c);
}
}
@@ -436,21 +480,17 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
/**
* 查找指定字符串是否匹配指定字符串列表中的任意一个字符串
- *
- * @param str 指定字符串
+ *
+ * @param str 指定字符串
* @param strs 需要检查的字符串数组
* @return 是否匹配
*/
- public static boolean matches(String str, List strs)
- {
- if (isEmpty(str) || isEmpty(strs))
- {
+ public static boolean matches(String str, List strs) {
+ if (isEmpty(str) || isEmpty(strs)) {
return false;
}
- for (String pattern : strs)
- {
- if (isMatch(pattern, str))
- {
+ for (String pattern : strs) {
+ if (isMatch(pattern, str)) {
return true;
}
}
@@ -458,70 +498,58 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils
}
/**
- * 判断url是否与规则配置:
- * ? 表示单个字符;
- * * 表示一层路径内的任意字符串,不可跨层级;
+ * 判断url是否与规则配置:
+ * ? 表示单个字符;
+ * * 表示一层路径内的任意字符串,不可跨层级;
* ** 表示任意层路径;
- *
+ *
* @param pattern 匹配规则
- * @param url 需要匹配的url
+ * @param url 需要匹配的url
* @return
*/
- public static boolean isMatch(String pattern, String url)
- {
+ public static boolean isMatch(String pattern, String url) {
AntPathMatcher matcher = new AntPathMatcher();
return matcher.match(pattern, url);
}
@SuppressWarnings("unchecked")
- public static T cast(Object obj)
- {
+ public static T cast(Object obj) {
return (T) obj;
}
/**
* 数字左边补齐0,使之达到指定长度。注意,如果数字转换为字符串后,长度大于size,则只保留 最后size个字符。
- *
- * @param num 数字对象
+ *
+ * @param num 数字对象
* @param size 字符串指定长度
* @return 返回数字的字符串格式,该字符串为指定长度。
*/
- public static final String padl(final Number num, final int size)
- {
+ public static final String padl(final Number num, final int size) {
return padl(num.toString(), size, '0');
}
/**
* 字符串左补齐。如果原始字符串s长度大于size,则只保留最后size个字符。
- *
- * @param s 原始字符串
+ *
+ * @param s 原始字符串
* @param size 字符串指定长度
- * @param c 用于补齐的字符
+ * @param c 用于补齐的字符
* @return 返回指定长度的字符串,由原字符串左补齐或截取得到。
*/
- public static final String padl(final String s, final int size, final char c)
- {
+ public static final String padl(final String s, final int size, final char c) {
final StringBuilder sb = new StringBuilder(size);
- if (s != null)
- {
+ if (s != null) {
final int len = s.length();
- if (s.length() <= size)
- {
- for (int i = size - len; i > 0; i--)
- {
+ if (s.length() <= size) {
+ for (int i = size - len; i > 0; i--) {
sb.append(c);
}
sb.append(s);
- }
- else
- {
+ } else {
return s.substring(len - size, len);
}
- }
- else
- {
- for (int i = size; i > 0; i--)
- {
+ } else {
+ for (int i = size; i > 0; i--) {
sb.append(c);
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanUtils.java
index d027ceff..85ff99fe 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanUtils.java
@@ -8,46 +8,46 @@ import java.util.regex.Pattern;
/**
* Bean 工具类
- *
+ *
* @author ruoyi
*/
-public class BeanUtils extends org.springframework.beans.BeanUtils
-{
- /** Bean方法名中属性名开始的下标 */
+public class BeanUtils extends org.springframework.beans.BeanUtils {
+ /**
+ * Bean方法名中属性名开始的下标
+ */
private static final int BEAN_METHOD_PROP_INDEX = 3;
- /** * 匹配getter方法的正则表达式 */
+ /**
+ * 匹配getter方法的正则表达式
+ */
private static final Pattern GET_PATTERN = Pattern.compile("get(\\p{javaUpperCase}\\w*)");
- /** * 匹配setter方法的正则表达式 */
+ /**
+ * 匹配setter方法的正则表达式
+ */
private static final Pattern SET_PATTERN = Pattern.compile("set(\\p{javaUpperCase}\\w*)");
/**
* Bean属性复制工具方法。
- *
+ *
* @param dest 目标对象
- * @param src 源对象
+ * @param src 源对象
*/
- public static void copyBeanProp(Object dest, Object src)
- {
- try
- {
+ public static void copyBeanProp(Object dest, Object src) {
+ try {
copyProperties(src, dest);
- }
- catch (Exception e)
- {
+ } catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取对象的setter方法。
- *
+ *
* @param obj 对象
* @return 对象的setter方法列表
*/
- public static List getSetterMethods(Object obj)
- {
+ public static List getSetterMethods(Object obj) {
// setter方法列表
List setterMethods = new ArrayList();
@@ -56,11 +56,9 @@ public class BeanUtils extends org.springframework.beans.BeanUtils
// 查找setter方法
- for (Method method : methods)
- {
+ for (Method method : methods) {
Matcher m = SET_PATTERN.matcher(method.getName());
- if (m.matches() && (method.getParameterTypes().length == 1))
- {
+ if (m.matches() && (method.getParameterTypes().length == 1)) {
setterMethods.add(method);
}
}
@@ -70,23 +68,20 @@ public class BeanUtils extends org.springframework.beans.BeanUtils
/**
* 获取对象的getter方法。
- *
+ *
* @param obj 对象
* @return 对象的getter方法列表
*/
- public static List getGetterMethods(Object obj)
- {
+ public static List getGetterMethods(Object obj) {
// getter方法列表
List getterMethods = new ArrayList();
// 获取所有方法
Method[] methods = obj.getClass().getMethods();
// 查找getter方法
- for (Method method : methods)
- {
+ for (Method method : methods) {
Matcher m = GET_PATTERN.matcher(method.getName());
- if (m.matches() && (method.getParameterTypes().length == 0))
- {
+ if (m.matches() && (method.getParameterTypes().length == 0)) {
getterMethods.add(method);
}
}
@@ -97,14 +92,13 @@ public class BeanUtils extends org.springframework.beans.BeanUtils
/**
* 检查Bean方法名中的属性名是否相等。
* 如getName()和setName()属性名一样,getName()和setAge()属性名不一样。
- *
+ *
* @param m1 方法名1
* @param m2 方法名2
* @return 属性名一样返回true,否则返回false
*/
- public static boolean isMethodPropEquals(String m1, String m2)
- {
+ public static boolean isMethodPropEquals(String m1, String m2) {
return m1.substring(BEAN_METHOD_PROP_INDEX).equals(m2.substring(BEAN_METHOD_PROP_INDEX));
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanValidators.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanValidators.java
index 75877262..98d30487 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanValidators.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/bean/BeanValidators.java
@@ -1,23 +1,20 @@
package com.ruoyi.common.core.utils.bean;
-import java.util.Set;
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.Validator;
+import java.util.Set;
/**
* bean对象属性验证
- *
+ *
* @author ruoyi
*/
-public class BeanValidators
-{
+public class BeanValidators {
public static void validateWithException(Validator validator, Object object, Class>... groups)
- throws ConstraintViolationException
- {
+ throws ConstraintViolationException {
Set> constraintViolations = validator.validate(object, groups);
- if (!constraintViolations.isEmpty())
- {
+ if (!constraintViolations.isEmpty()) {
throw new ConstraintViolationException(constraintViolations);
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileTypeUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileTypeUtils.java
index 1629fcd4..4e11b4d3 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileTypeUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileTypeUtils.java
@@ -1,27 +1,25 @@
package com.ruoyi.common.core.utils.file;
-import java.io.File;
import org.apache.commons.lang3.StringUtils;
+import java.io.File;
+
/**
* 文件类型工具类
*
* @author ruoyi
*/
-public class FileTypeUtils
-{
+public class FileTypeUtils {
/**
* 获取文件类型
*
* 例如: ruoyi.txt, 返回: txt
- *
+ *
* @param file 文件名
* @return 后缀(不含".")
*/
- public static String getFileType(File file)
- {
- if (null == file)
- {
+ public static String getFileType(File file) {
+ if (null == file) {
return StringUtils.EMPTY;
}
return getFileType(file.getName());
@@ -35,11 +33,9 @@ public class FileTypeUtils
* @param fileName 文件名
* @return 后缀(不含".")
*/
- public static String getFileType(String fileName)
- {
+ public static String getFileType(String fileName) {
int separatorIndex = fileName.lastIndexOf(".");
- if (separatorIndex < 0)
- {
+ if (separatorIndex < 0) {
return "";
}
return fileName.substring(separatorIndex + 1).toLowerCase();
@@ -47,30 +43,43 @@ public class FileTypeUtils
/**
* 获取文件类型
- *
+ *
* @param photoByte 文件字节码
* @return 后缀(不含".")
*/
- public static String getFileExtendName(byte[] photoByte)
- {
+ public static String getFileExtendName(byte[] photoByte) {
String strFileExtendName = "JPG";
- if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56)
- && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97))
- {
- strFileExtendName = "GIF";
- }
- else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70))
- {
+ int i71 = 71;
+ int i73 = 73;
+ int i2 = 2;
+ int i70 = 70;
+ int i3 = 3;
+ int i56 = 56;
+ int i5 = 5;
+ int i97 = 97;
+ int i4 = 4;
+ int i55 = 55;
+ int i57 = 57;
+ int i6 = 6;
+ int i74 = 74;
+ int i7 = 7;
+ int i8 = 8;
+ int i9 = 9;
+ int i66 = 66;
+ int i77 = 77;
+ int i80 = 80;
+ int i78 = 78;
+ if ((photoByte[0] == i71) && (photoByte[1] == i73) && (photoByte[i2] == i70) && (photoByte[i3] == i56) && (photoByte[i5] == i97)) {
+ if ((photoByte[i4] == i55) || (photoByte[i4] == i57)) {
+ strFileExtendName = "GIF";
+ }
+ } else if ((photoByte[i6] == i74) && (photoByte[i7] == i70) && (photoByte[i8] == i73) && (photoByte[i9] == i70)) {
strFileExtendName = "JPG";
- }
- else if ((photoByte[0] == 66) && (photoByte[1] == 77))
- {
+ } else if ((photoByte[0] == i66) && (photoByte[1] == i77)) {
strFileExtendName = "BMP";
- }
- else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71))
- {
+ } else if ((photoByte[1] == i80) && (photoByte[i2] == i78) && (photoByte[i3] == i71)) {
strFileExtendName = "PNG";
}
return strFileExtendName;
}
-}
\ No newline at end of file
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java
index f76bb34b..c1c5d40a 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/FileUtils.java
@@ -1,83 +1,64 @@
package com.ruoyi.common.core.utils.file;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
-import java.nio.charset.StandardCharsets;
+import com.ruoyi.common.core.utils.StringUtils;
+import org.apache.commons.lang3.ArrayUtils;
+
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.lang3.ArrayUtils;
-import com.ruoyi.common.core.utils.StringUtils;
+import java.io.*;
+import java.net.URLEncoder;
+import java.nio.charset.StandardCharsets;
/**
* 文件处理工具类
- *
+ *
* @author ruoyi
*/
-public class FileUtils
-{
- /** 字符常量:斜杠 {@code '/'} */
+public class FileUtils {
+ /**
+ * 字符常量:斜杠 {@code '/'}
+ */
public static final char SLASH = '/';
- /** 字符常量:反斜杠 {@code '\\'} */
+ /**
+ * 字符常量:反斜杠 {@code '\\'}
+ */
public static final char BACKSLASH = '\\';
- public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
+ public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-|.\\u4e00-\\u9fa5]+";
/**
* 输出指定文件的byte数组
- *
+ *
* @param filePath 文件路径
- * @param os 输出流
+ * @param os 输出流
* @return
*/
- public static void writeBytes(String filePath, OutputStream os) throws IOException
- {
+ public static void writeBytes(String filePath, OutputStream os) throws IOException {
FileInputStream fis = null;
- try
- {
+ try {
File file = new File(filePath);
- if (!file.exists())
- {
+ if (!file.exists()) {
throw new FileNotFoundException(filePath);
}
fis = new FileInputStream(file);
byte[] b = new byte[1024];
int length;
- while ((length = fis.read(b)) > 0)
- {
+ while ((length = fis.read(b)) > 0) {
os.write(b, 0, length);
}
- }
- catch (IOException e)
- {
- throw e;
- }
- finally
- {
- if (os != null)
- {
- try
- {
+ } finally {
+ if (os != null) {
+ try {
os.close();
- }
- catch (IOException e1)
- {
+ } catch (IOException e1) {
e1.printStackTrace();
}
}
- if (fis != null)
- {
- try
- {
+ if (fis != null) {
+ try {
fis.close();
- }
- catch (IOException e1)
- {
+ } catch (IOException e1) {
e1.printStackTrace();
}
}
@@ -86,17 +67,15 @@ public class FileUtils
/**
* 删除文件
- *
+ *
* @param filePath 文件
* @return
*/
- public static boolean deleteFile(String filePath)
- {
+ public static boolean deleteFile(String filePath) {
boolean flag = false;
File file = new File(filePath);
// 路径为文件且不为空则进行删除
- if (file.isFile() && file.exists())
- {
+ if (file.isFile() && file.exists()) {
file.delete();
flag = true;
}
@@ -105,32 +84,28 @@ public class FileUtils
/**
* 文件名称验证
- *
+ *
* @param filename 文件名称
* @return true 正常 false 非法
*/
- public static boolean isValidFilename(String filename)
- {
+ public static boolean isValidFilename(String filename) {
return filename.matches(FILENAME_PATTERN);
}
/**
* 检查文件是否可下载
- *
+ *
* @param resource 需要下载的文件
* @return true 正常 false 非法
*/
- public static boolean checkAllowDownload(String resource)
- {
+ public static boolean checkAllowDownload(String resource) {
// 禁止目录上跳级别
- if (StringUtils.contains(resource, ".."))
- {
+ if (StringUtils.contains(resource, StringUtils.DOT + StringUtils.DOT)) {
return false;
}
// 检查允许下载的文件规则
- if (ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource)))
- {
+ if (ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource))) {
return true;
}
@@ -140,33 +115,25 @@ public class FileUtils
/**
* 下载文件名重新编码
- *
- * @param request 请求对象
+ *
+ * @param request 请求对象
* @param fileName 文件名
* @return 编码后的文件名
*/
- public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException
- {
+ public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException {
final String agent = request.getHeader("USER-AGENT");
String filename = fileName;
- if (agent.contains("MSIE"))
- {
+ if (agent.contains(StringUtils.MSIE)) {
// IE浏览器
filename = URLEncoder.encode(filename, "utf-8");
filename = filename.replace("+", " ");
- }
- else if (agent.contains("Firefox"))
- {
+ } else if (agent.contains(StringUtils.FIREFOX)) {
// 火狐浏览器
filename = new String(fileName.getBytes(), "ISO8859-1");
- }
- else if (agent.contains("Chrome"))
- {
+ } else if (agent.contains(StringUtils.CHROME)) {
// google浏览器
filename = URLEncoder.encode(filename, "utf-8");
- }
- else
- {
+ } else {
// 其它浏览器
filename = URLEncoder.encode(filename, "utf-8");
}
@@ -179,30 +146,24 @@ public class FileUtils
* @param filePath 文件
* @return 文件名
*/
- public static String getName(String filePath)
- {
- if (null == filePath)
- {
+ public static String getName(String filePath) {
+ if (null == filePath) {
return null;
}
int len = filePath.length();
- if (0 == len)
- {
+ if (0 == len) {
return filePath;
}
- if (isFileSeparator(filePath.charAt(len - 1)))
- {
+ if (isFileSeparator(filePath.charAt(len - 1))) {
// 以分隔符结尾的去掉结尾分隔符
len--;
}
int begin = 0;
char c;
- for (int i = len - 1; i > -1; i--)
- {
+ for (int i = len - 1; i > -1; i--) {
c = filePath.charAt(i);
- if (isFileSeparator(c))
- {
+ if (isFileSeparator(c)) {
// 查找最后一个路径分隔符(/或者\)
begin = i + 1;
break;
@@ -219,20 +180,18 @@ public class FileUtils
* @param c 字符
* @return 是否为Windows或者Linux(Unix)文件分隔符
*/
- public static boolean isFileSeparator(char c)
- {
+ public static boolean isFileSeparator(char c) {
return SLASH == c || BACKSLASH == c;
}
/**
* 下载文件名重新编码
*
- * @param response 响应对象
+ * @param response 响应对象
* @param realFileName 真实文件名
* @return
*/
- public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException
- {
+ public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException {
String percentEncodedFileName = percentEncode(realFileName);
StringBuilder contentDispositionValue = new StringBuilder();
@@ -253,8 +212,7 @@ public class FileUtils
* @param s 需要百分号编码的字符串
* @return 百分号编码后的字符串
*/
- public static String percentEncode(String s) throws UnsupportedEncodingException
- {
+ public static String percentEncode(String s) throws UnsupportedEncodingException {
String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString());
return encode.replaceAll("\\+", "%20");
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/ImageUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/ImageUtils.java
index c3b19fc4..74ace6f4 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/ImageUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/ImageUtils.java
@@ -1,67 +1,55 @@
package com.ruoyi.common.core.utils.file;
+import org.apache.poi.util.IOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.Arrays;
-import org.apache.poi.util.IOUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
/**
* 图片处理工具类
*
* @author ruoyi
*/
-public class ImageUtils
-{
+public class ImageUtils {
private static final Logger log = LoggerFactory.getLogger(ImageUtils.class);
- public static byte[] getImage(String imagePath)
- {
+ public static byte[] getImage(String imagePath) {
InputStream is = getFile(imagePath);
- try
- {
+ try {
return IOUtils.toByteArray(is);
- }
- catch (Exception e)
- {
- log.error("图片加载异常 {}", e);
+ } catch (Exception e) {
+ log.error("图片加载异常 ", e);
return null;
- }
- finally
- {
+ } finally {
IOUtils.closeQuietly(is);
}
}
- public static InputStream getFile(String imagePath)
- {
- try
- {
+ public static InputStream getFile(String imagePath) {
+ try {
byte[] result = readFile(imagePath);
result = Arrays.copyOf(result, result.length);
return new ByteArrayInputStream(result);
- }
- catch (Exception e)
- {
- log.error("获取图片异常 {}", e);
+ } catch (Exception e) {
+ log.error("获取图片异常 ", e);
}
return null;
}
/**
* 读取文件为字节数据
- *
+ *
* @param url 地址
* @return 字节数据
*/
- public static byte[] readFile(String url)
- {
+ public static byte[] readFile(String url) {
InputStream in = null;
- try
- {
+ try {
// 网络地址
URL urlObj = new URL(url);
URLConnection urlConnection = urlObj.openConnection();
@@ -70,14 +58,10 @@ public class ImageUtils
urlConnection.setDoInput(true);
in = urlConnection.getInputStream();
return IOUtils.toByteArray(in);
- }
- catch (Exception e)
- {
- log.error("访问文件异常 {}", e);
+ } catch (Exception e) {
+ log.error("访问文件异常 ", e);
return null;
- }
- finally
- {
+ } finally {
IOUtils.closeQuietly(in);
}
}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/MimeTypeUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/MimeTypeUtils.java
index b8a3bc39..d3466cda 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/MimeTypeUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/MimeTypeUtils.java
@@ -2,11 +2,10 @@ package com.ruoyi.common.core.utils.file;
/**
* 媒体类型工具类
- *
+ *
* @author ruoyi
*/
-public class MimeTypeUtils
-{
+public class MimeTypeUtils {
public static final String IMAGE_PNG = "image/png";
public static final String IMAGE_JPG = "image/jpg";
@@ -17,14 +16,14 @@ public class MimeTypeUtils
public static final String IMAGE_GIF = "image/gif";
- public static final String[] IMAGE_EXTENSION = { "bmp", "gif", "jpg", "jpeg", "png" };
+ public static final String[] IMAGE_EXTENSION = {"bmp", "gif", "jpg", "jpeg", "png"};
- public static final String[] FLASH_EXTENSION = { "swf", "flv" };
+ public static final String[] FLASH_EXTENSION = {"swf", "flv"};
- public static final String[] MEDIA_EXTENSION = { "swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg",
- "asf", "rm", "rmvb" };
+ public static final String[] MEDIA_EXTENSION = {"swf", "flv", "mp3", "wav", "wma", "wmv", "mid", "avi", "mpg",
+ "asf", "rm", "rmvb"};
- public static final String[] VIDEO_EXTENSION = { "mp4", "avi", "rmvb" };
+ public static final String[] VIDEO_EXTENSION = {"mp4", "avi", "rmvb"};
public static final String[] DEFAULT_ALLOWED_EXTENSION = {
// 图片
@@ -36,12 +35,10 @@ public class MimeTypeUtils
// 视频格式
"mp4", "avi", "rmvb",
// pdf
- "pdf" };
+ "pdf"};
- public static String getExtension(String prefix)
- {
- switch (prefix)
- {
+ public static String getExtension(String prefix) {
+ switch (prefix) {
case IMAGE_PNG:
return "png";
case IMAGE_JPG:
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/EscapeUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/EscapeUtil.java
index 2f5a8721..e891154d 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/EscapeUtil.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/EscapeUtil.java
@@ -4,95 +4,82 @@ import com.ruoyi.common.core.utils.StringUtils;
/**
* 转义和反转义工具类
- *
+ *
* @author ruoyi
*/
-public class EscapeUtil
-{
+public class EscapeUtil {
public static final String RE_HTML_MARK = "(<[^<]*?>)|(<[\\s]*?/[^<]*?>)|(<[^<]*?/[\\s]*?>)";
private static final char[][] TEXT = new char[64][];
- static
- {
- for (int i = 0; i < 64; i++)
- {
- TEXT[i] = new char[] { (char) i };
+ static {
+ int baseSize = 64;
+ for (int i = 0; i < baseSize; i++) {
+ TEXT[i] = new char[]{(char) i};
}
// special HTML characters
- TEXT['\''] = "'".toCharArray(); // 单引号
- TEXT['"'] = """.toCharArray(); // 双引号
- TEXT['&'] = "&".toCharArray(); // &符
- TEXT['<'] = "<".toCharArray(); // 小于号
- TEXT['>'] = ">".toCharArray(); // 大于号
+ TEXT['\''] = "'".toCharArray();
+ TEXT['"'] = """.toCharArray();
+ TEXT['&'] = "&".toCharArray();
+ TEXT['<'] = "<".toCharArray();
+ TEXT['>'] = ">".toCharArray();
}
/**
* 转义文本中的HTML字符为安全的字符
- *
+ *
* @param text 被转义的文本
* @return 转义后的文本
*/
- public static String escape(String text)
- {
+ public static String escape(String text) {
return encode(text);
}
/**
* 还原被转义的HTML特殊字符
- *
+ *
* @param content 包含转义符的HTML内容
* @return 转换后的字符串
*/
- public static String unescape(String content)
- {
+ public static String unescape(String content) {
return decode(content);
}
/**
* 清除所有HTML标签,但是不删除标签内的内容
- *
+ *
* @param content 文本
* @return 清除标签后的文本
*/
- public static String clean(String content)
- {
- return new HTMLFilter().filter(content);
+ public static String clean(String content) {
+ return new HtmlFilter().filter(content);
}
/**
* Escape编码
- *
+ *
* @param text 被编码的文本
* @return 编码后的字符
*/
- private static String encode(String text)
- {
- if (StringUtils.isEmpty(text))
- {
+ private static String encode(String text) {
+ if (StringUtils.isEmpty(text)) {
return StringUtils.EMPTY;
}
final StringBuilder tmp = new StringBuilder(text.length() * 6);
char c;
- for (int i = 0; i < text.length(); i++)
- {
+ for (int i = 0; i < text.length(); i++) {
c = text.charAt(i);
- if (c < 256)
- {
+ if (c < 256) {
tmp.append("%");
- if (c < 16)
- {
+ if (c < 16) {
tmp.append("0");
}
tmp.append(Integer.toString(c, 16));
- }
- else
- {
+ } else {
tmp.append("%u");
- if (c <= 0xfff)
- {
+ if (c <= 0xfff) {
// issue#I49JU8@Gitee
tmp.append("0");
}
@@ -104,48 +91,36 @@ public class EscapeUtil
/**
* Escape解码
- *
+ *
* @param content 被转义的内容
* @return 解码后的字符串
*/
- public static String decode(String content)
- {
- if (StringUtils.isEmpty(content))
- {
+ public static String decode(String content) {
+ if (StringUtils.isEmpty(content)) {
return content;
}
StringBuilder tmp = new StringBuilder(content.length());
int lastPos = 0, pos = 0;
char ch;
- while (lastPos < content.length())
- {
+ while (lastPos < content.length()) {
pos = content.indexOf("%", lastPos);
- if (pos == lastPos)
- {
- if (content.charAt(pos + 1) == 'u')
- {
+ if (pos == lastPos) {
+ if (content.charAt(pos + 1) == 'u') {
ch = (char) Integer.parseInt(content.substring(pos + 2, pos + 6), 16);
tmp.append(ch);
lastPos = pos + 6;
- }
- else
- {
+ } else {
ch = (char) Integer.parseInt(content.substring(pos + 1, pos + 3), 16);
tmp.append(ch);
lastPos = pos + 3;
}
- }
- else
- {
- if (pos == -1)
- {
+ } else {
+ if (pos == -1) {
tmp.append(content.substring(lastPos));
lastPos = content.length();
- }
- else
- {
- tmp.append(content.substring(lastPos, pos));
+ } else {
+ tmp.append(content, lastPos, pos);
lastPos = pos;
}
}
@@ -153,8 +128,7 @@ public class EscapeUtil
return tmp.toString();
}
- public static void main(String[] args)
- {
+ public static void main(String[] args) {
String html = "";
String escape = EscapeUtil.escape(html);
// String html = "ipt>alert(\"XSS\")ipt>";
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/HTMLFilter.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/HtmlFilter.java
similarity index 69%
rename from ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/HTMLFilter.java
rename to ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/HtmlFilter.java
index 1052b55a..a9ec547d 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/HTMLFilter.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/html/HtmlFilter.java
@@ -1,10 +1,8 @@
package com.ruoyi.common.core.utils.html;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import com.ruoyi.common.core.utils.StringUtils;
+
+import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.regex.Matcher;
@@ -15,8 +13,7 @@ import java.util.regex.Pattern;
*
* @author ruoyi
*/
-public final class HTMLFilter
-{
+public final class HtmlFilter {
/**
* regex flag union representing /si modifiers in php
**/
@@ -45,7 +42,9 @@ public final class HTMLFilter
private static final Pattern P_RIGHT_ARROW = Pattern.compile(">");
private static final Pattern P_BOTH_ARROWS = Pattern.compile("<>");
- // @xxx could grow large... maybe use sesat's ReferenceMap
+ /**
+ * @xxx could grow large... maybe use sesat's ReferenceMap
+ */
private static final ConcurrentMap P_REMOVE_PAIR_BLANKS = new ConcurrentHashMap<>();
private static final ConcurrentMap P_REMOVE_SELF_BLANKS = new ConcurrentHashMap<>();
@@ -100,35 +99,34 @@ public final class HTMLFilter
/**
* Default constructor.
*/
- public HTMLFilter()
- {
+ public HtmlFilter() {
vAllowed = new HashMap<>();
- final ArrayList a_atts = new ArrayList<>();
- a_atts.add("href");
- a_atts.add("target");
- vAllowed.put("a", a_atts);
-
- final ArrayList img_atts = new ArrayList<>();
- img_atts.add("src");
- img_atts.add("width");
- img_atts.add("height");
- img_atts.add("alt");
- vAllowed.put("img", img_atts);
-
- final ArrayList no_atts = new ArrayList<>();
- vAllowed.put("b", no_atts);
- vAllowed.put("strong", no_atts);
- vAllowed.put("i", no_atts);
- vAllowed.put("em", no_atts);
-
- vSelfClosingTags = new String[] { "img" };
- vNeedClosingTags = new String[] { "a", "b", "strong", "i", "em" };
- vDisallowed = new String[] {};
- vAllowedProtocols = new String[] { "http", "mailto", "https" }; // no ftp.
- vProtocolAtts = new String[] { "src", "href" };
- vRemoveBlanks = new String[] { "a", "b", "strong", "i", "em" };
- vAllowedEntities = new String[] { "amp", "gt", "lt", "quot" };
+ final ArrayList aAtos = new ArrayList<>();
+ aAtos.add("href");
+ aAtos.add("target");
+ vAllowed.put("a", aAtos);
+
+ final ArrayList imgAtts = new ArrayList<>();
+ imgAtts.add("src");
+ imgAtts.add("width");
+ imgAtts.add("height");
+ imgAtts.add("alt");
+ vAllowed.put("img", imgAtts);
+
+ final ArrayList noAtts = new ArrayList<>();
+ vAllowed.put("b", noAtts);
+ vAllowed.put("strong", noAtts);
+ vAllowed.put("i", noAtts);
+ vAllowed.put("em", noAtts);
+
+ vSelfClosingTags = new String[]{"img"};
+ vNeedClosingTags = new String[]{"a", "b", "strong", "i", "em"};
+ vDisallowed = new String[]{};
+ vAllowedProtocols = new String[]{"http", "mailto", "https"};
+ vProtocolAtts = new String[]{"src", "href"};
+ vRemoveBlanks = new String[]{"a", "b", "strong", "i", "em"};
+ vAllowedEntities = new String[]{"amp", "gt", "lt", "quot"};
stripComment = true;
encodeQuotes = true;
alwaysMakeTags = false;
@@ -140,8 +138,7 @@ public final class HTMLFilter
* @param conf map containing configuration. keys match field names.
*/
@SuppressWarnings("unchecked")
- public HTMLFilter(final Map conf)
- {
+ public HtmlFilter(final Map conf) {
assert conf.containsKey("vAllowed") : "configuration requires vAllowed";
assert conf.containsKey("vSelfClosingTags") : "configuration requires vSelfClosingTags";
@@ -165,20 +162,19 @@ public final class HTMLFilter
alwaysMakeTags = conf.containsKey("alwaysMakeTags") ? (Boolean) conf.get("alwaysMakeTags") : true;
}
- private void reset()
- {
- vTagCounts.clear();
+ /**
+ * my versions of some PHP library functions
+ *
+ * @param decimal /
+ * @return /
+ */
+ public static String chr(final int decimal) {
+ return String.valueOf((char) decimal);
}
// ---------------------------------------------------------------
- // my versions of some PHP library functions
- public static String chr(final int decimal)
- {
- return String.valueOf((char) decimal);
- }
- public static String htmlSpecialChars(final String s)
- {
+ public static String htmlSpecialChars(final String s) {
String result = s;
result = regexReplace(P_AMP, "&", result);
result = regexReplace(P_QUOTE, """, result);
@@ -187,22 +183,39 @@ public final class HTMLFilter
return result;
}
+ private static String regexReplace(final Pattern regexPattern, final String replacement, final String s) {
+ Matcher m = regexPattern.matcher(s);
+ return m.replaceAll(replacement);
+ }
+
// ---------------------------------------------------------------
+ private static boolean inArray(final String s, final String[] array) {
+ for (String item : array) {
+ if (item != null && item.equals(s)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ private void reset() {
+ vTagCounts.clear();
+ }
+
/**
* given a user submitted input String, filter out any invalid or restricted html.
*
* @param input text (i.e. submitted by a user) than may contain html
* @return "clean" version of input, with only valid, whitelisted html elements allowed
*/
- public String filter(final String input)
- {
+ public String filter(final String input) {
reset();
String s = input;
s = escapeComments(s);
- s = balanceHTML(s);
+ s = balancehtml(s);
s = checkTags(s);
@@ -213,23 +226,19 @@ public final class HTMLFilter
return s;
}
- public boolean isAlwaysMakeTags()
- {
+ public boolean isAlwaysMakeTags() {
return alwaysMakeTags;
}
- public boolean isStripComments()
- {
+ public boolean isStripComments() {
return stripComment;
}
- private String escapeComments(final String s)
- {
+ private String escapeComments(final String s) {
final Matcher m = P_COMMENTS.matcher(s);
final StringBuffer buf = new StringBuffer();
- if (m.find())
- {
- final String match = m.group(1); // (.*?)
+ if (m.find()) {
+ final String match = m.group(1);
m.appendReplacement(buf, Matcher.quoteReplacement(""));
}
m.appendTail(buf);
@@ -237,10 +246,8 @@ public final class HTMLFilter
return buf.toString();
}
- private String balanceHTML(String s)
- {
- if (alwaysMakeTags)
- {
+ private String balancehtml(String s) {
+ if (alwaysMakeTags) {
//
// try and form html
//
@@ -249,9 +256,7 @@ public final class HTMLFilter
s = regexReplace(P_BODY_TO_END, "<$1>", s);
s = regexReplace(P_XML_CONTENT, "$1<$2", s);
- }
- else
- {
+ } else {
//
// escape stray brackets
//
@@ -269,13 +274,11 @@ public final class HTMLFilter
return s;
}
- private String checkTags(String s)
- {
+ private String checkTags(String s) {
Matcher m = P_TAGS.matcher(s);
final StringBuffer buf = new StringBuffer();
- while (m.find())
- {
+ while (m.find()) {
String replaceStr = m.group(1);
replaceStr = processTag(replaceStr);
m.appendReplacement(buf, Matcher.quoteReplacement(replaceStr));
@@ -285,10 +288,8 @@ public final class HTMLFilter
// these get tallied in processTag
// (remember to reset before subsequent calls to filter method)
final StringBuilder sBuilder = new StringBuilder(buf.toString());
- for (String key : vTagCounts.keySet())
- {
- for (int ii = 0; ii < vTagCounts.get(key); ii++)
- {
+ for (String key : vTagCounts.keySet()) {
+ for (int ii = 0; ii < vTagCounts.get(key); ii++) {
sBuilder.append("").append(key).append(">");
}
}
@@ -297,18 +298,14 @@ public final class HTMLFilter
return s;
}
- private String processRemoveBlanks(final String s)
- {
+ private String processRemoveBlanks(final String s) {
String result = s;
- for (String tag : vRemoveBlanks)
- {
- if (!P_REMOVE_PAIR_BLANKS.containsKey(tag))
- {
+ for (String tag : vRemoveBlanks) {
+ if (!P_REMOVE_PAIR_BLANKS.containsKey(tag)) {
P_REMOVE_PAIR_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?>" + tag + ">"));
}
result = regexReplace(P_REMOVE_PAIR_BLANKS.get(tag), "", result);
- if (!P_REMOVE_SELF_BLANKS.containsKey(tag))
- {
+ if (!P_REMOVE_SELF_BLANKS.containsKey(tag)) {
P_REMOVE_SELF_BLANKS.putIfAbsent(tag, Pattern.compile("<" + tag + "(\\s[^>]*)?/>"));
}
result = regexReplace(P_REMOVE_SELF_BLANKS.get(tag), "", result);
@@ -317,136 +314,88 @@ public final class HTMLFilter
return result;
}
- private static String regexReplace(final Pattern regex_pattern, final String replacement, final String s)
- {
- Matcher m = regex_pattern.matcher(s);
- return m.replaceAll(replacement);
- }
-
- private String processTag(final String s)
- {
- // ending tags
+ private String processTag(final String s) {
Matcher m = P_END_TAG.matcher(s);
- if (m.find())
- {
+ if (m.find()) {
final String name = m.group(1).toLowerCase();
- if (allowed(name))
- {
- if (false == inArray(name, vSelfClosingTags))
- {
- if (vTagCounts.containsKey(name))
- {
+ if (allowed(name)) {
+ if (false == inArray(name, vSelfClosingTags)) {
+ if (vTagCounts.containsKey(name)) {
vTagCounts.put(name, vTagCounts.get(name) - 1);
return "" + name + ">";
}
}
}
}
-
// starting tags
m = P_START_TAG.matcher(s);
- if (m.find())
- {
+ if (m.find()) {
final String name = m.group(1).toLowerCase();
final String body = m.group(2);
String ending = m.group(3);
-
// debug( "in a starting tag, name='" + name + "'; body='" + body + "'; ending='" + ending + "'" );
- if (allowed(name))
- {
+ if (allowed(name)) {
final StringBuilder params = new StringBuilder();
-
final Matcher m2 = P_QUOTED_ATTRIBUTES.matcher(body);
final Matcher m3 = P_UNQUOTED_ATTRIBUTES.matcher(body);
final List paramNames = new ArrayList<>();
final List paramValues = new ArrayList<>();
- while (m2.find())
- {
- paramNames.add(m2.group(1)); // ([a-z0-9]+)
- paramValues.add(m2.group(3)); // (.*?)
+ while (m2.find()) {
+ paramNames.add(m2.group(1));
+ paramValues.add(m2.group(3));
}
- while (m3.find())
- {
- paramNames.add(m3.group(1)); // ([a-z0-9]+)
- paramValues.add(m3.group(3)); // ([^\"\\s']+)
+ while (m3.find()) {
+ paramNames.add(m3.group(1));
+ paramValues.add(m3.group(3));
}
-
String paramName, paramValue;
- for (int ii = 0; ii < paramNames.size(); ii++)
- {
+ for (int ii = 0; ii < paramNames.size(); ii++) {
paramName = paramNames.get(ii).toLowerCase();
paramValue = paramValues.get(ii);
-
- // debug( "paramName='" + paramName + "'" );
- // debug( "paramValue='" + paramValue + "'" );
- // debug( "allowed? " + vAllowed.get( name ).contains( paramName ) );
-
- if (allowedAttribute(name, paramName))
- {
- if (inArray(paramName, vProtocolAtts))
- {
+ if (allowedAttribute(name, paramName)) {
+ if (inArray(paramName, vProtocolAtts)) {
paramValue = processParamProtocol(paramValue);
}
params.append(' ').append(paramName).append("=\\\"").append(paramValue).append("\"");
}
}
-
- if (inArray(name, vSelfClosingTags))
- {
+ if (inArray(name, vSelfClosingTags)) {
ending = " /";
}
-
- if (inArray(name, vNeedClosingTags))
- {
+ if (inArray(name, vNeedClosingTags)) {
ending = "";
}
-
- if (ending == null || ending.length() < 1)
- {
- if (vTagCounts.containsKey(name))
- {
+ if (ending == null || ending.length() < 1) {
+ if (vTagCounts.containsKey(name)) {
vTagCounts.put(name, vTagCounts.get(name) + 1);
- }
- else
- {
+ } else {
vTagCounts.put(name, 1);
}
- }
- else
- {
+ } else {
ending = " /";
}
return "<" + name + params + ending + ">";
- }
- else
- {
+ } else {
return "";
}
}
-
// comments
m = P_COMMENT.matcher(s);
- if (!stripComment && m.find())
- {
+ if (!stripComment && m.find()) {
return "<" + m.group() + ">";
}
-
return "";
}
- private String processParamProtocol(String s)
- {
+ private String processParamProtocol(String s) {
s = decodeEntities(s);
final Matcher m = P_PROTOCOL.matcher(s);
- if (m.find())
- {
+ if (m.find()) {
final String protocol = m.group(1);
- if (!inArray(protocol, vAllowedProtocols))
- {
+ if (!inArray(protocol, vAllowedProtocols)) {
// bad protocol, turn into local anchor link instead
s = "#" + s.substring(protocol.length() + 1);
- if (s.startsWith("#//"))
- {
+ if (s.startsWith(StringUtils.WELL_NO + StringUtils.SLASH + StringUtils.SLASH)) {
s = "#" + s.substring(3);
}
}
@@ -455,13 +404,11 @@ public final class HTMLFilter
return s;
}
- private String decodeEntities(String s)
- {
+ private String decodeEntities(String s) {
StringBuffer buf = new StringBuffer();
Matcher m = P_ENTITY.matcher(s);
- while (m.find())
- {
+ while (m.find()) {
final String match = m.group(1);
final int decimal = Integer.decode(match).intValue();
m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal)));
@@ -471,8 +418,7 @@ public final class HTMLFilter
buf = new StringBuffer();
m = P_ENTITY_UNICODE.matcher(s);
- while (m.find())
- {
+ while (m.find()) {
final String match = m.group(1);
final int decimal = Integer.valueOf(match, 16).intValue();
m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal)));
@@ -482,8 +428,7 @@ public final class HTMLFilter
buf = new StringBuffer();
m = P_ENCODE.matcher(s);
- while (m.find())
- {
+ while (m.find()) {
final String match = m.group(1);
final int decimal = Integer.valueOf(match, 16).intValue();
m.appendReplacement(buf, Matcher.quoteReplacement(chr(decimal)));
@@ -495,16 +440,14 @@ public final class HTMLFilter
return s;
}
- private String validateEntities(final String s)
- {
+ private String validateEntities(final String s) {
StringBuffer buf = new StringBuffer();
// validate entities throughout the string
Matcher m = P_VALID_ENTITIES.matcher(s);
- while (m.find())
- {
- final String one = m.group(1); // ([^&;]*)
- final String two = m.group(2); // (?=(;|&|$))
+ while (m.find()) {
+ final String one = m.group(1);
+ final String two = m.group(2);
m.appendReplacement(buf, Matcher.quoteReplacement(checkEntity(one, two)));
}
m.appendTail(buf);
@@ -512,59 +455,38 @@ public final class HTMLFilter
return encodeQuotes(buf.toString());
}
- private String encodeQuotes(final String s)
- {
- if (encodeQuotes)
- {
+ private String encodeQuotes(final String s) {
+ if (encodeQuotes) {
StringBuffer buf = new StringBuffer();
Matcher m = P_VALID_QUOTES.matcher(s);
- while (m.find())
- {
- final String one = m.group(1); // (>|^)
- final String two = m.group(2); // ([^<]+?)
- final String three = m.group(3); // (<|$)
- // 不替换双引号为",防止json格式无效 regexReplace(P_QUOTE, """, two)
+ while (m.find()) {
+ final String one = m.group(1);
+ final String two = m.group(2);
+ final String three = m.group(3);
+ /*不替换双引号为",防止json格式无效 regexReplace(P_QUOTE, """, two)*/
m.appendReplacement(buf, Matcher.quoteReplacement(one + two + three));
}
m.appendTail(buf);
return buf.toString();
- }
- else
- {
+ } else {
return s;
}
}
- private String checkEntity(final String preamble, final String term)
- {
+ private String checkEntity(final String preamble, final String term) {
return ";".equals(term) && isValidEntity(preamble) ? '&' + preamble : "&" + preamble;
}
- private boolean isValidEntity(final String entity)
- {
+ private boolean isValidEntity(final String entity) {
return inArray(entity, vAllowedEntities);
}
- private static boolean inArray(final String s, final String[] array)
- {
- for (String item : array)
- {
- if (item != null && item.equals(s))
- {
- return true;
- }
- }
- return false;
- }
-
- private boolean allowed(final String name)
- {
+ private boolean allowed(final String name) {
return (vAllowed.isEmpty() || vAllowed.containsKey(name)) && !inArray(name, vDisallowed);
}
- private boolean allowedAttribute(final String name, final String paramName)
- {
+ private boolean allowedAttribute(final String name, final String paramName) {
return allowed(name) && (vAllowed.isEmpty() || vAllowed.get(name).contains(paramName));
}
-}
\ No newline at end of file
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java
index 78186aca..3582eee7 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ip/IpUtils.java
@@ -1,49 +1,43 @@
package com.ruoyi.common.core.utils.ip;
+import com.ruoyi.common.core.utils.StringUtils;
+
+import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;
-import javax.servlet.http.HttpServletRequest;
-import com.ruoyi.common.core.utils.StringUtils;
/**
* 获取IP方法
- *
+ *
* @author ruoyi
*/
-public class IpUtils
-{
+public class IpUtils {
/**
* 获取客户端IP
- *
+ *
* @param request 请求对象
* @return IP地址
*/
- public static String getIpAddr(HttpServletRequest request)
- {
- if (request == null)
- {
- return "unknown";
+ public static String getIpAddr(HttpServletRequest request) {
+ String unknown = "unknown";
+ if (request == null) {
+ return unknown;
}
String ip = request.getHeader("x-forwarded-for");
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
- {
+ if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("Proxy-Client-IP");
}
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
- {
+ if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Forwarded-For");
}
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
- {
+ if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("WL-Proxy-Client-IP");
}
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
- {
+ if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getHeader("X-Real-IP");
}
- if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
- {
+ if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
@@ -52,84 +46,81 @@ public class IpUtils
/**
* 检查是否为内部IP地址
- *
+ *
* @param ip IP地址
* @return 结果
*/
- public static boolean internalIp(String ip)
- {
+ public static boolean internalIp(String ip) {
byte[] addr = textToNumericFormatV4(ip);
return internalIp(addr) || "127.0.0.1".equals(ip);
}
/**
* 检查是否为内部IP地址
- *
+ *
* @param addr byte地址
* @return 结果
*/
- private static boolean internalIp(byte[] addr)
- {
- if (StringUtils.isNull(addr) || addr.length < 2)
- {
+ private static boolean internalIp(byte[] addr) {
+ int tow = 2;
+ if (StringUtils.isNull(addr) || addr.length < tow) {
return true;
}
final byte b0 = addr[0];
final byte b1 = addr[1];
// 10.x.x.x/8
- final byte SECTION_1 = 0x0A;
+ final byte section1 = 0x0A;
// 172.16.x.x/12
- final byte SECTION_2 = (byte) 0xAC;
- final byte SECTION_3 = (byte) 0x10;
- final byte SECTION_4 = (byte) 0x1F;
+ final byte section2 = (byte) 0xAC;
+ final byte section3 = (byte) 0x10;
+ final byte section4 = (byte) 0x1F;
// 192.168.x.x/16
- final byte SECTION_5 = (byte) 0xC0;
- final byte SECTION_6 = (byte) 0xA8;
- switch (b0)
- {
- case SECTION_1:
+ final byte section5 = (byte) 0xC0;
+ final byte section6 = (byte) 0xA8;
+ switch (b0) {
+ case section1:
return true;
- case SECTION_2:
- if (b1 >= SECTION_3 && b1 <= SECTION_4)
- {
+ case section2:
+ if (b1 >= section3 && b1 <= section4) {
return true;
}
- case SECTION_5:
- switch (b1)
- {
- case SECTION_6:
+ case section5:
+ switch (b1) {
+ case section6: {
return true;
+ }
+ default: {
+ break;
+ }
}
- default:
+ default: {
return false;
+ }
+
}
}
/**
* 将IPv4地址转换成字节
- *
+ *
* @param text IPv4地址
* @return byte 字节
*/
- public static byte[] textToNumericFormatV4(String text)
- {
- if (text.length() == 0)
- {
+ public static byte[] textToNumericFormatV4(String text) {
+ if (text.length() == 0) {
return null;
}
byte[] bytes = new byte[4];
String[] elements = text.split("\\.", -1);
- try
- {
+ try {
long l;
int i;
- switch (elements.length)
- {
+ switch (elements.length) {
case 1:
l = Long.parseLong(elements[0]);
- if ((l < 0L) || (l > 4294967295L))
- {
+ long l1 = 4294967295L;
+ if ((l < 0L) || (l > l1)) {
return null;
}
bytes[0] = (byte) (int) (l >> 24 & 0xFF);
@@ -139,14 +130,14 @@ public class IpUtils
break;
case 2:
l = Integer.parseInt(elements[0]);
- if ((l < 0L) || (l > 255L))
- {
+ long l2 = 255L;
+ if ((l < 0L) || (l > l2)) {
return null;
}
bytes[0] = (byte) (int) (l & 0xFF);
l = Integer.parseInt(elements[1]);
- if ((l < 0L) || (l > 16777215L))
- {
+ long l3 = 16777215L;
+ if ((l < 0L) || (l > l3)) {
return null;
}
bytes[1] = (byte) (int) (l >> 16 & 0xFF);
@@ -154,29 +145,27 @@ public class IpUtils
bytes[3] = (byte) (int) (l & 0xFF);
break;
case 3:
- for (i = 0; i < 2; ++i)
- {
+ int i1 = 2;
+ for (i = 0; i < i1; ++i) {
l = Integer.parseInt(elements[i]);
- if ((l < 0L) || (l > 255L))
- {
+ if ((l < 0L) || (l > 255L)) {
return null;
}
bytes[i] = (byte) (int) (l & 0xFF);
}
l = Integer.parseInt(elements[2]);
- if ((l < 0L) || (l > 65535L))
- {
+ long l4 = 65535L;
+ if ((l < 0L) || (l > l4)) {
return null;
}
bytes[2] = (byte) (int) (l >> 8 & 0xFF);
bytes[3] = (byte) (int) (l & 0xFF);
break;
case 4:
- for (i = 0; i < 4; ++i)
- {
+ int i2 = 4;
+ for (i = 0; i < i2; ++i) {
l = Integer.parseInt(elements[i]);
- if ((l < 0L) || (l > 255L))
- {
+ if ((l < 0L) || (l > 255L)) {
return null;
}
bytes[i] = (byte) (int) (l & 0xFF);
@@ -185,9 +174,7 @@ public class IpUtils
default:
return null;
}
- }
- catch (NumberFormatException e)
- {
+ } catch (NumberFormatException e) {
return null;
}
return bytes;
@@ -195,34 +182,28 @@ public class IpUtils
/**
* 获取IP地址
- *
+ *
* @return 本地IP地址
*/
- public static String getHostIp()
- {
- try
- {
+ public static String getHostIp() {
+ try {
return InetAddress.getLocalHost().getHostAddress();
- }
- catch (UnknownHostException e)
- {
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
}
return "127.0.0.1";
}
/**
* 获取主机名
- *
+ *
* @return 本地主机名
*/
- public static String getHostName()
- {
- try
- {
+ public static String getHostName() {
+ try {
return InetAddress.getLocalHost().getHostName();
- }
- catch (UnknownHostException e)
- {
+ } catch (UnknownHostException e) {
+ e.printStackTrace();
}
return "未知";
}
@@ -233,16 +214,12 @@ public class IpUtils
* @param ip 获得的IP地址
* @return 第一个非unknown IP地址
*/
- public static String getMultistageReverseProxyIp(String ip)
- {
+ public static String getMultistageReverseProxyIp(String ip) {
// 多级反向代理检测
- if (ip != null && ip.indexOf(",") > 0)
- {
+ if (ip != null && ip.indexOf(StringUtils.COMMA) > 0) {
final String[] ips = ip.trim().split(",");
- for (String subIp : ips)
- {
- if (false == isUnknown(subIp))
- {
+ for (String subIp : ips) {
+ if (false == isUnknown(subIp)) {
ip = subIp;
break;
}
@@ -257,8 +234,7 @@ public class IpUtils
* @param checkString 被检测的字符串
* @return 是否未知
*/
- public static boolean isUnknown(String checkString)
- {
+ public static boolean isUnknown(String checkString) {
return StringUtils.isBlank(checkString) || "unknown".equalsIgnoreCase(checkString);
}
-}
\ No newline at end of file
+}
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelHandlerAdapter.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelHandlerAdapter.java
index 15bb8d26..eef3b014 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelHandlerAdapter.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelHandlerAdapter.java
@@ -2,17 +2,15 @@ package com.ruoyi.common.core.utils.poi;
/**
* Excel数据格式处理适配器
- *
+ *
* @author ruoyi
*/
-public interface ExcelHandlerAdapter
-{
+public interface ExcelHandlerAdapter {
/**
* 格式化
- *
- * @param value 单元格数据值
- * @param args excel注解args参数组
*
+ * @param value 单元格数据值
+ * @param args excel注解args参数组
* @return 处理后的值
*/
Object format(Object value, String[] args);
diff --git a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelUtil.java b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelUtil.java
index bfa20379..cb6c6e46 100644
--- a/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelUtil.java
+++ b/ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelUtil.java
@@ -1,51 +1,5 @@
package com.ruoyi.common.core.utils.poi;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.math.BigDecimal;
-import java.text.DecimalFormat;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.stream.Collectors;
-import javax.servlet.http.HttpServletResponse;
-import org.apache.commons.lang3.RegExUtils;
-import org.apache.poi.ss.usermodel.BorderStyle;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.CellStyle;
-import org.apache.poi.ss.usermodel.CellType;
-import org.apache.poi.ss.usermodel.ClientAnchor;
-import org.apache.poi.ss.usermodel.DataValidation;
-import org.apache.poi.ss.usermodel.DataValidationConstraint;
-import org.apache.poi.ss.usermodel.DataValidationHelper;
-import org.apache.poi.ss.usermodel.DateUtil;
-import org.apache.poi.ss.usermodel.Drawing;
-import org.apache.poi.ss.usermodel.FillPatternType;
-import org.apache.poi.ss.usermodel.Font;
-import org.apache.poi.ss.usermodel.HorizontalAlignment;
-import org.apache.poi.ss.usermodel.IndexedColors;
-import org.apache.poi.ss.usermodel.Row;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.VerticalAlignment;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.ss.usermodel.WorkbookFactory;
-import org.apache.poi.ss.util.CellRangeAddress;
-import org.apache.poi.ss.util.CellRangeAddressList;
-import org.apache.poi.util.IOUtils;
-import org.apache.poi.xssf.streaming.SXSSFWorkbook;
-import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
-import org.apache.poi.xssf.usermodel.XSSFDataValidation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.ruoyi.common.core.annotation.Excel;
import com.ruoyi.common.core.annotation.Excel.ColumnType;
import com.ruoyi.common.core.annotation.Excel.Type;
@@ -56,99 +10,169 @@ import com.ruoyi.common.core.utils.StringUtils;
import com.ruoyi.common.core.utils.file.FileTypeUtils;
import com.ruoyi.common.core.utils.file.ImageUtils;
import com.ruoyi.common.core.utils.reflect.ReflectUtils;
+import org.apache.commons.lang3.RegExUtils;
+import org.apache.poi.ss.usermodel.*;
+import org.apache.poi.ss.util.CellRangeAddress;
+import org.apache.poi.ss.util.CellRangeAddressList;
+import org.apache.poi.util.IOUtils;
+import org.apache.poi.xssf.streaming.SXSSFWorkbook;
+import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
+import org.apache.poi.xssf.usermodel.XSSFDataValidation;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+import java.math.BigDecimal;
+import java.text.DecimalFormat;
+import java.time.LocalDate;
+import java.time.LocalDateTime;
+import java.util.*;
+import java.util.stream.Collectors;
/**
* Excel相关处理
*
* @author ruoyi
*/
-public class ExcelUtil
-{
- private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class);
-
+public class ExcelUtil {
public static final String FORMULA_REGEX_STR = "=|-|\\+|@";
-
- public static final String[] FORMULA_STR = { "=", "-", "+", "@" };
-
+ public static final String[] FORMULA_STR = {"=", "-", "+", "@"};
/**
* Excel sheet最大行数,默认65536
*/
- public static final int sheetSize = 65536;
-
+ public static final int SHEET_SIZE = 65536;
+ private static final Logger log = LoggerFactory.getLogger(ExcelUtil.class);
+ /**
+ * 数字格式
+ */
+ private static final DecimalFormat DOUBLE_FORMAT = new DecimalFormat("######0.00");
+ /**
+ * 实体对象
+ */
+ public Class clazz;
/**
* 工作表名称
*/
private String sheetName;
-
/**
* 导出类型(EXPORT:导出数据;IMPORT:导入模板)
*/
private Type type;
-
/**
* 工作薄对象
*/
private Workbook wb;
-
/**
* 工作表对象
*/
private Sheet sheet;
-
/**
* 样式列表
*/
private Map styles;
-
/**
* 导入导出数据列表
*/
private List list;
-
/**
* 注解列表
*/
private List