update
This commit is contained in:
@@ -8,12 +8,14 @@ import java.util.Set;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 通用api
|
* 通用api
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
public interface CommonAPI {
|
public interface CommonAPI {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 1查询用户角色信息
|
* 1查询用户角色信息
|
||||||
|
*
|
||||||
* @param username
|
* @param username
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -21,6 +23,7 @@ public interface CommonAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 1查询用户角色信息
|
* 1查询用户角色信息
|
||||||
|
*
|
||||||
* @param userId
|
* @param userId
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -29,6 +32,7 @@ public interface CommonAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 2查询用户权限信息
|
* 2查询用户权限信息
|
||||||
|
*
|
||||||
* @param userId
|
* @param userId
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -52,6 +56,7 @@ public interface CommonAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 5根据用户账号查询用户信息
|
* 5根据用户账号查询用户信息
|
||||||
|
*
|
||||||
* @param username
|
* @param username
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -59,6 +64,7 @@ public interface CommonAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 5根据用户账号查询用户Id
|
* 5根据用户账号查询用户Id
|
||||||
|
*
|
||||||
* @param username
|
* @param username
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -67,6 +73,7 @@ public interface CommonAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 6字典表的 翻译
|
* 6字典表的 翻译
|
||||||
|
*
|
||||||
* @param table
|
* @param table
|
||||||
* @param text
|
* @param text
|
||||||
* @param code
|
* @param code
|
||||||
@@ -77,6 +84,7 @@ public interface CommonAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 7普通字典的翻译
|
* 7普通字典的翻译
|
||||||
|
*
|
||||||
* @param code
|
* @param code
|
||||||
* @param key
|
* @param key
|
||||||
* @return
|
* @return
|
||||||
@@ -85,6 +93,7 @@ public interface CommonAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 8查询数据权限
|
* 8查询数据权限
|
||||||
|
*
|
||||||
* @param component 组件
|
* @param component 组件
|
||||||
* @param username 用户名
|
* @param username 用户名
|
||||||
* @param requestPath 前段请求地址
|
* @param requestPath 前段请求地址
|
||||||
@@ -95,6 +104,7 @@ public interface CommonAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 9查询用户信息
|
* 9查询用户信息
|
||||||
|
*
|
||||||
* @param username
|
* @param username
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -102,6 +112,7 @@ public interface CommonAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 10获取数据字典
|
* 10获取数据字典
|
||||||
|
*
|
||||||
* @param code
|
* @param code
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -109,6 +120,7 @@ public interface CommonAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取有效的数据字典项
|
* 获取有效的数据字典项
|
||||||
|
*
|
||||||
* @param code
|
* @param code
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -116,6 +128,7 @@ public interface CommonAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 13获取表数据字典
|
* 13获取表数据字典
|
||||||
|
*
|
||||||
* @param tableFilterSql
|
* @param tableFilterSql
|
||||||
* @param text
|
* @param text
|
||||||
* @param code
|
* @param code
|
||||||
@@ -125,6 +138,7 @@ public interface CommonAPI {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 14 普通字典的翻译,根据多个dictCode和多条数据,多个以逗号分割
|
* 14 普通字典的翻译,根据多个dictCode和多条数据,多个以逗号分割
|
||||||
|
*
|
||||||
* @param dictCodes 例如:user_status,sex
|
* @param dictCodes 例如:user_status,sex
|
||||||
* @param keys 例如:1,2,0
|
* @param keys 例如:1,2,0
|
||||||
* @return
|
* @return
|
||||||
@@ -132,8 +146,10 @@ public interface CommonAPI {
|
|||||||
Map<String, List<DictModel>> translateManyDict(String dictCodes, String keys);
|
Map<String, List<DictModel>> translateManyDict(String dictCodes, String keys);
|
||||||
|
|
||||||
//update-begin---author:chenrui ---date:20231221 for:[issues/#5643]解决分布式下表字典跨库无法查询问题------------
|
//update-begin---author:chenrui ---date:20231221 for:[issues/#5643]解决分布式下表字典跨库无法查询问题------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 15 字典表的 翻译,可批量
|
* 15 字典表的 翻译,可批量
|
||||||
|
*
|
||||||
* @param table
|
* @param table
|
||||||
* @param text
|
* @param text
|
||||||
* @param code
|
* @param code
|
||||||
|
|||||||
@@ -1,13 +1,14 @@
|
|||||||
package org.jeecg.common.api.dto;
|
package org.jeecg.common.api.dto;
|
||||||
|
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件下载
|
* 文件下载
|
||||||
* cloud api 用到的接口传输对象
|
* cloud api 用到的接口传输对象
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@@ -20,7 +21,8 @@ public class FileDownDTO implements Serializable {
|
|||||||
private String uploadType;
|
private String uploadType;
|
||||||
private HttpServletResponse response;
|
private HttpServletResponse response;
|
||||||
|
|
||||||
public FileDownDTO(){}
|
public FileDownDTO() {
|
||||||
|
}
|
||||||
|
|
||||||
public FileDownDTO(String filePath, String uploadpath, String uploadType, HttpServletResponse response) {
|
public FileDownDTO(String filePath, String uploadpath, String uploadType, HttpServletResponse response) {
|
||||||
this.filePath = filePath;
|
this.filePath = filePath;
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.io.Serializable;
|
|||||||
/**
|
/**
|
||||||
* 文件上传
|
* 文件上传
|
||||||
* cloud api 用到的接口传输对象
|
* cloud api 用到的接口传输对象
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@@ -29,6 +30,7 @@ public class FileUploadDTO implements Serializable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 简单上传 构造器1
|
* 简单上传 构造器1
|
||||||
|
*
|
||||||
* @param file
|
* @param file
|
||||||
* @param bizPath
|
* @param bizPath
|
||||||
* @param uploadType
|
* @param uploadType
|
||||||
@@ -41,6 +43,7 @@ public class FileUploadDTO implements Serializable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 申明桶 文件上传 构造器2
|
* 申明桶 文件上传 构造器2
|
||||||
|
*
|
||||||
* @param file
|
* @param file
|
||||||
* @param bizPath
|
* @param bizPath
|
||||||
* @param uploadType
|
* @param uploadType
|
||||||
|
|||||||
@@ -1,13 +1,15 @@
|
|||||||
package org.jeecg.common.api.dto;
|
package org.jeecg.common.api.dto;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.jeecg.common.aspect.annotation.Dict;
|
|
||||||
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.common.system.vo.LoginUser;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 日志对象
|
* 日志对象
|
||||||
* cloud api 用到的接口传输对象
|
* cloud api 用到的接口传输对象
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@@ -15,16 +17,24 @@ public class LogDTO implements Serializable {
|
|||||||
|
|
||||||
private static final long serialVersionUID = 8482720462943906924L;
|
private static final long serialVersionUID = 8482720462943906924L;
|
||||||
|
|
||||||
/**内容*/
|
/**
|
||||||
|
* 内容
|
||||||
|
*/
|
||||||
private String logContent;
|
private String logContent;
|
||||||
|
|
||||||
/**日志类型(0:操作日志;1:登录日志;2:定时任务) */
|
/**
|
||||||
|
* 日志类型(0:操作日志;1:登录日志;2:定时任务)
|
||||||
|
*/
|
||||||
private Integer logType;
|
private Integer logType;
|
||||||
|
|
||||||
/**操作类型(1:添加;2:修改;3:删除;) */
|
/**
|
||||||
|
* 操作类型(1:添加;2:修改;3:删除;)
|
||||||
|
*/
|
||||||
private Integer operateType;
|
private Integer operateType;
|
||||||
|
|
||||||
/**登录用户 */
|
/**
|
||||||
|
* 登录用户
|
||||||
|
*/
|
||||||
private LoginUser loginUser;
|
private LoginUser loginUser;
|
||||||
|
|
||||||
private String id;
|
private String id;
|
||||||
@@ -33,22 +43,34 @@ public class LogDTO implements Serializable {
|
|||||||
private Long costTime;
|
private Long costTime;
|
||||||
private String ip;
|
private String ip;
|
||||||
|
|
||||||
/**请求参数 */
|
/**
|
||||||
|
* 请求参数
|
||||||
|
*/
|
||||||
private String requestParam;
|
private String requestParam;
|
||||||
|
|
||||||
/**请求类型*/
|
/**
|
||||||
|
* 请求类型
|
||||||
|
*/
|
||||||
private String requestType;
|
private String requestType;
|
||||||
|
|
||||||
/**请求路径*/
|
/**
|
||||||
|
* 请求路径
|
||||||
|
*/
|
||||||
private String requestUrl;
|
private String requestUrl;
|
||||||
|
|
||||||
/**请求方法 */
|
/**
|
||||||
|
* 请求方法
|
||||||
|
*/
|
||||||
private String method;
|
private String method;
|
||||||
|
|
||||||
/**操作人用户名称*/
|
/**
|
||||||
|
* 操作人用户名称
|
||||||
|
*/
|
||||||
private String username;
|
private String username;
|
||||||
|
|
||||||
/**操作人用户账户*/
|
/**
|
||||||
|
* 操作人用户账户
|
||||||
|
*/
|
||||||
private String userid;
|
private String userid;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.util.List;
|
|||||||
/**
|
/**
|
||||||
* online 拦截器权限判断
|
* online 拦截器权限判断
|
||||||
* cloud api 用到的接口传输对象
|
* cloud api 用到的接口传输对象
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ public class BusMessageDTO extends MessageDTO implements Serializable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造 带业务参数的消息
|
* 构造 带业务参数的消息
|
||||||
|
*
|
||||||
* @param fromUser
|
* @param fromUser
|
||||||
* @param toUser
|
* @param toUser
|
||||||
* @param title
|
* @param title
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 带业务参数的模板消息
|
* 带业务参数的模板消息
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@@ -30,6 +31,7 @@ public class BusTemplateMessageDTO extends TemplateMessageDTO implements Seriali
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造 带业务参数的模板消息
|
* 构造 带业务参数的模板消息
|
||||||
|
*
|
||||||
* @param fromUser
|
* @param fromUser
|
||||||
* @param toUser
|
* @param toUser
|
||||||
* @param title
|
* @param title
|
||||||
|
|||||||
@@ -4,10 +4,12 @@ import lombok.Data;
|
|||||||
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.constant.CommonConstant;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.*;
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 普通消息
|
* 普通消息
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 消息模板dto
|
* 消息模板dto
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -1,11 +1,13 @@
|
|||||||
package org.jeecg.common.api.dto.message;
|
package org.jeecg.common.api.dto.message;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 模板消息
|
* 模板消息
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@@ -45,5 +47,4 @@ public class TemplateMessageDTO extends TemplateDTO implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import java.io.Serializable;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 接口返回数据格式
|
* 接口返回数据格式
|
||||||
|
*
|
||||||
* @author scott
|
* @author scott
|
||||||
* @email jeecgos@163.com
|
* @email jeecgos@163.com
|
||||||
* @date 2019年1月19日
|
* @date 2019年1月19日
|
||||||
@@ -54,6 +55,7 @@ public class Result<T> implements Serializable {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 兼容VUE3版token失效不跳转登录页面
|
* 兼容VUE3版token失效不跳转登录页面
|
||||||
|
*
|
||||||
* @param code
|
* @param code
|
||||||
* @param message
|
* @param message
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -2,6 +2,10 @@ package org.jeecg.common.aspect;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.alibaba.fastjson.serializer.PropertyFilter;
|
import com.alibaba.fastjson.serializer.PropertyFilter;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.ServletRequest;
|
||||||
|
import jakarta.servlet.ServletResponse;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
import org.aspectj.lang.JoinPoint;
|
import org.aspectj.lang.JoinPoint;
|
||||||
import org.aspectj.lang.ProceedingJoinPoint;
|
import org.aspectj.lang.ProceedingJoinPoint;
|
||||||
@@ -15,20 +19,16 @@ import org.jeecg.common.aspect.annotation.AutoLog;
|
|||||||
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.constant.CommonConstant;
|
||||||
import org.jeecg.common.constant.enums.ModuleType;
|
import org.jeecg.common.constant.enums.ModuleType;
|
||||||
import org.jeecg.common.constant.enums.OperateTypeEnum;
|
import org.jeecg.common.constant.enums.OperateTypeEnum;
|
||||||
import org.jeecg.modules.base.service.BaseCommonService;
|
|
||||||
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.common.system.vo.LoginUser;
|
||||||
import org.jeecg.common.util.IpUtils;
|
import org.jeecg.common.util.IpUtils;
|
||||||
import org.jeecg.common.util.SpringContextUtils;
|
import org.jeecg.common.util.SpringContextUtils;
|
||||||
import org.jeecg.common.util.oConvertUtils;
|
import org.jeecg.common.util.oConvertUtils;
|
||||||
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;
|
import org.jeecg.modules.base.service.BaseCommonService;
|
||||||
import org.springframework.core.StandardReflectionParameterNameDiscoverer;
|
import org.springframework.core.StandardReflectionParameterNameDiscoverer;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import org.springframework.validation.BindingResult;
|
import org.springframework.validation.BindingResult;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import jakarta.servlet.ServletRequest;
|
|
||||||
import jakarta.servlet.ServletResponse;
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
@@ -128,11 +128,11 @@ public class AutoLogAspect {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param request: request
|
||||||
|
* @param joinPoint: joinPoint
|
||||||
* @Description: 获取请求参数
|
* @Description: 获取请求参数
|
||||||
* @author: scott
|
* @author: scott
|
||||||
* @date: 2020/4/16 0:10
|
* @date: 2020/4/16 0:10
|
||||||
* @param request: request
|
|
||||||
* @param joinPoint: joinPoint
|
|
||||||
* @Return: java.lang.String
|
* @Return: java.lang.String
|
||||||
*/
|
*/
|
||||||
private String getReqestParams(HttpServletRequest request, JoinPoint joinPoint) {
|
private String getReqestParams(HttpServletRequest request, JoinPoint joinPoint) {
|
||||||
@@ -186,6 +186,7 @@ public class AutoLogAspect {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* online日志内容拼接
|
* online日志内容拼接
|
||||||
|
*
|
||||||
* @param obj
|
* @param obj
|
||||||
* @param content
|
* @param content
|
||||||
* @return
|
* @return
|
||||||
|
|||||||
@@ -91,6 +91,7 @@ public class DictAspect {
|
|||||||
* }
|
* }
|
||||||
* }
|
* }
|
||||||
* 目前vue是这么进行字典渲染到table上的多了就很麻烦了 这个直接在服务端渲染完成前端可以直接用
|
* 目前vue是这么进行字典渲染到table上的多了就很麻烦了 这个直接在服务端渲染完成前端可以直接用
|
||||||
|
*
|
||||||
* @param result
|
* @param result
|
||||||
*/
|
*/
|
||||||
private Object parseDictText(Object result) {
|
private Object parseDictText(Object result) {
|
||||||
@@ -229,6 +230,7 @@ public class DictAspect {
|
|||||||
* 一次性把所有的字典都翻译了
|
* 一次性把所有的字典都翻译了
|
||||||
* 1. 所有的普通数据字典的所有数据只执行一次SQL
|
* 1. 所有的普通数据字典的所有数据只执行一次SQL
|
||||||
* 2. 表字典相同的所有数据只执行一次SQL
|
* 2. 表字典相同的所有数据只执行一次SQL
|
||||||
|
*
|
||||||
* @param dataListMap
|
* @param dataListMap
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -381,6 +383,7 @@ public class DictAspect {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 翻译字典文本
|
* 翻译字典文本
|
||||||
|
*
|
||||||
* @param code
|
* @param code
|
||||||
* @param text
|
* @param text
|
||||||
* @param table
|
* @param table
|
||||||
@@ -440,6 +443,7 @@ public class DictAspect {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 检测返回结果集中是否包含Dict注解
|
* 检测返回结果集中是否包含Dict注解
|
||||||
|
*
|
||||||
* @param records
|
* @param records
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.jeecg.common.aspect;
|
package org.jeecg.common.aspect;
|
||||||
|
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.aspectj.lang.ProceedingJoinPoint;
|
import org.aspectj.lang.ProceedingJoinPoint;
|
||||||
import org.aspectj.lang.annotation.Around;
|
import org.aspectj.lang.annotation.Around;
|
||||||
@@ -21,13 +22,13 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||||||
import org.springframework.context.annotation.Lazy;
|
import org.springframework.context.annotation.Lazy;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据权限切面处理类
|
* 数据权限切面处理类
|
||||||
* 当被请求的方法有注解PermissionData时,会在往当前request中写入数据权限信息
|
* 当被请求的方法有注解PermissionData时,会在往当前request中写入数据权限信息
|
||||||
|
*
|
||||||
* @Date 2019年4月10日
|
* @Date 2019年4月10日
|
||||||
* @Version: 1.0
|
* @Version: 1.0
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
@@ -99,6 +100,7 @@ public class PermissionDataAspect {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取请求地址
|
* 获取请求地址
|
||||||
|
*
|
||||||
* @param request
|
* @param request
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -6,19 +6,33 @@ package org.jeecg.common.aspect;
|
|||||||
* @Description: 请求URL与菜单路由URL转换规则(方便于采用菜单路由URL来配置数据权限规则)
|
* @Description: 请求URL与菜单路由URL转换规则(方便于采用菜单路由URL来配置数据权限规则)
|
||||||
*/
|
*/
|
||||||
public enum UrlMatchEnum {
|
public enum UrlMatchEnum {
|
||||||
/**求URL与菜单路由URL转换规则 /online/cgform/api/getData/ */
|
/**
|
||||||
|
* 求URL与菜单路由URL转换规则 /online/cgform/api/getData/
|
||||||
|
*/
|
||||||
CGFORM_DATA("/online/cgform/api/getData/", "/online/cgformList/"),
|
CGFORM_DATA("/online/cgform/api/getData/", "/online/cgformList/"),
|
||||||
/**求URL与菜单路由URL转换规则 /online/cgform/api/exportXls/ */
|
/**
|
||||||
|
* 求URL与菜单路由URL转换规则 /online/cgform/api/exportXls/
|
||||||
|
*/
|
||||||
CGFORM_EXCEL_DATA("/online/cgform/api/exportXls/", "/online/cgformList/"),
|
CGFORM_EXCEL_DATA("/online/cgform/api/exportXls/", "/online/cgformList/"),
|
||||||
/**求URL与菜单路由URL转换规则 /online/cgform/api/getTreeData/ */
|
/**
|
||||||
|
* 求URL与菜单路由URL转换规则 /online/cgform/api/getTreeData/
|
||||||
|
*/
|
||||||
CGFORM_TREE_DATA("/online/cgform/api/getTreeData/", "/online/cgformList/"),
|
CGFORM_TREE_DATA("/online/cgform/api/getTreeData/", "/online/cgformList/"),
|
||||||
/**求URL与菜单路由URL转换规则 /online/cgreport/api/getColumnsAndData/ */
|
/**
|
||||||
|
* 求URL与菜单路由URL转换规则 /online/cgreport/api/getColumnsAndData/
|
||||||
|
*/
|
||||||
CGREPORT_DATA("/online/cgreport/api/getColumnsAndData/", "/online/cgreport/"),
|
CGREPORT_DATA("/online/cgreport/api/getColumnsAndData/", "/online/cgreport/"),
|
||||||
/** 求URL与菜单路由URL转换规则/online/cgreport/api/getData/ 【vue3报表数据请求地址】 */
|
/**
|
||||||
|
* 求URL与菜单路由URL转换规则/online/cgreport/api/getData/ 【vue3报表数据请求地址】
|
||||||
|
*/
|
||||||
CGREPORT_ONLY_DATA("/online/cgreport/api/getData/", "/online/cgreport/"),
|
CGREPORT_ONLY_DATA("/online/cgreport/api/getData/", "/online/cgreport/"),
|
||||||
/**求URL与菜单路由URL转换规则 /online/cgreport/api/exportXls/ */
|
/**
|
||||||
|
* 求URL与菜单路由URL转换规则 /online/cgreport/api/exportXls/
|
||||||
|
*/
|
||||||
CGREPORT_EXCEL_DATA("/online/cgreport/api/exportXls/", "/online/cgreport/"),
|
CGREPORT_EXCEL_DATA("/online/cgreport/api/exportXls/", "/online/cgreport/"),
|
||||||
/**求URL与菜单路由URL转换规则 /online/cgreport/api/exportManySheetXls/ */
|
/**
|
||||||
|
* 求URL与菜单路由URL转换规则 /online/cgreport/api/exportManySheetXls/
|
||||||
|
*/
|
||||||
CGREPORT_EXCEL_DATA2("/online/cgreport/api/exportManySheetXls/", "/online/cgreport/");
|
CGREPORT_EXCEL_DATA2("/online/cgreport/api/exportManySheetXls/", "/online/cgreport/");
|
||||||
|
|
||||||
UrlMatchEnum(String url, String matchUrl) {
|
UrlMatchEnum(String url, String matchUrl) {
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ public @interface AutoDict {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 暂时无用
|
* 暂时无用
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
String value() default "";
|
String value() default "";
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ public @interface AutoLog {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 模块类型 默认为common
|
* 模块类型 默认为common
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
ModuleType module() default ModuleType.COMMON;
|
ModuleType module() default ModuleType.COMMON;
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import java.lang.annotation.Target;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 字典注解
|
* 字典注解
|
||||||
|
*
|
||||||
* @author: dangzhenghui
|
* @author: dangzhenghui
|
||||||
* @date: 2019年03月17日-下午9:37:16
|
* @date: 2019年03月17日-下午9:37:16
|
||||||
*/
|
*/
|
||||||
@@ -42,6 +43,7 @@ public @interface Dict {
|
|||||||
|
|
||||||
|
|
||||||
//update-begin---author:chenrui ---date:20231221 for:[issues/#5643]解决分布式下表字典跨库无法查询问题------------
|
//update-begin---author:chenrui ---date:20231221 for:[issues/#5643]解决分布式下表字典跨库无法查询问题------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 方法描述: 数据字典表所在数据源名称
|
* 方法描述: 数据字典表所在数据源名称
|
||||||
* 作 者: chenrui
|
* 作 者: chenrui
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ import java.lang.annotation.*;
|
|||||||
public @interface DynamicTable {
|
public @interface DynamicTable {
|
||||||
/**
|
/**
|
||||||
* 需要动态解析的表名
|
* 需要动态解析的表名
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
String value();
|
String value();
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import java.lang.annotation.*;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* online请求拦截专用注解
|
* online请求拦截专用注解
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@@ -13,6 +14,7 @@ public @interface OnlineAuth {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求关键字,在xxx/code之前的字符串
|
* 请求关键字,在xxx/code之前的字符串
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
String value();
|
String value();
|
||||||
|
|||||||
@@ -1,13 +1,10 @@
|
|||||||
package org.jeecg.common.aspect.annotation;
|
package org.jeecg.common.aspect.annotation;
|
||||||
|
|
||||||
import java.lang.annotation.Documented;
|
import java.lang.annotation.*;
|
||||||
import java.lang.annotation.ElementType;
|
|
||||||
import java.lang.annotation.Retention;
|
|
||||||
import java.lang.annotation.RetentionPolicy;
|
|
||||||
import java.lang.annotation.Target;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据权限注解
|
* 数据权限注解
|
||||||
|
*
|
||||||
* @Author taoyan
|
* @Author taoyan
|
||||||
* @Date 2019年4月11日
|
* @Date 2019年4月11日
|
||||||
*/
|
*/
|
||||||
@@ -17,6 +14,7 @@ import java.lang.annotation.Target;
|
|||||||
public @interface PermissionData {
|
public @interface PermissionData {
|
||||||
/**
|
/**
|
||||||
* 暂时没用
|
* 暂时没用
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
String value() default "";
|
String value() default "";
|
||||||
|
|||||||
@@ -77,27 +77,43 @@ public interface CommonConstant {
|
|||||||
int OPERATE_TYPE_6 = 6;
|
int OPERATE_TYPE_6 = 6;
|
||||||
|
|
||||||
|
|
||||||
/** {@code 500 Server Error} (HTTP/1.0 - RFC 1945) */
|
/**
|
||||||
|
* {@code 500 Server Error} (HTTP/1.0 - RFC 1945)
|
||||||
|
*/
|
||||||
Integer SC_INTERNAL_SERVER_ERROR_500 = 500;
|
Integer SC_INTERNAL_SERVER_ERROR_500 = 500;
|
||||||
/** {@code 404 Not Found} (HTTP/1.0 - RFC 1945) */
|
/**
|
||||||
|
* {@code 404 Not Found} (HTTP/1.0 - RFC 1945)
|
||||||
|
*/
|
||||||
Integer SC_INTERNAL_NOT_FOUND_404 = 404;
|
Integer SC_INTERNAL_NOT_FOUND_404 = 404;
|
||||||
/** {@code 200 OK} (HTTP/1.0 - RFC 1945) */
|
/**
|
||||||
|
* {@code 200 OK} (HTTP/1.0 - RFC 1945)
|
||||||
|
*/
|
||||||
Integer SC_OK_200 = 200;
|
Integer SC_OK_200 = 200;
|
||||||
|
|
||||||
/**访问权限认证未通过 510*/
|
/**
|
||||||
|
* 访问权限认证未通过 510
|
||||||
|
*/
|
||||||
Integer SC_JEECG_NO_AUTHZ = 510;
|
Integer SC_JEECG_NO_AUTHZ = 510;
|
||||||
|
|
||||||
/** 登录用户Shiro权限缓存KEY前缀 */
|
/**
|
||||||
|
* 登录用户Shiro权限缓存KEY前缀
|
||||||
|
*/
|
||||||
public static String PREFIX_USER_SHIRO_CACHE = "shiro:cache:org.jeecg.config.shiro.ShiroRealm.authorizationCache:";
|
public static String PREFIX_USER_SHIRO_CACHE = "shiro:cache:org.jeecg.config.shiro.ShiroRealm.authorizationCache:";
|
||||||
/** 登录用户Token令牌缓存KEY前缀 */
|
/**
|
||||||
|
* 登录用户Token令牌缓存KEY前缀
|
||||||
|
*/
|
||||||
String PREFIX_USER_TOKEN = "prefix_user_token:";
|
String PREFIX_USER_TOKEN = "prefix_user_token:";
|
||||||
// /** Token缓存时间:3600秒即一小时 */
|
// /** Token缓存时间:3600秒即一小时 */
|
||||||
// int TOKEN_EXPIRE_TIME = 3600;
|
// int TOKEN_EXPIRE_TIME = 3600;
|
||||||
|
|
||||||
/** 登录二维码 */
|
/**
|
||||||
|
* 登录二维码
|
||||||
|
*/
|
||||||
String LOGIN_QRCODE_PRE = "QRCODELOGIN:";
|
String LOGIN_QRCODE_PRE = "QRCODELOGIN:";
|
||||||
String LOGIN_QRCODE = "LQ:";
|
String LOGIN_QRCODE = "LQ:";
|
||||||
/** 登录二维码token */
|
/**
|
||||||
|
* 登录二维码token
|
||||||
|
*/
|
||||||
String LOGIN_QRCODE_TOKEN = "LQT:";
|
String LOGIN_QRCODE_TOKEN = "LQT:";
|
||||||
|
|
||||||
|
|
||||||
@@ -114,20 +130,28 @@ public interface CommonConstant {
|
|||||||
*/
|
*/
|
||||||
Integer MENU_TYPE_2 = 2;
|
Integer MENU_TYPE_2 = 2;
|
||||||
|
|
||||||
/**通告对象类型(USER:指定用户,ALL:全体用户)*/
|
/**
|
||||||
|
* 通告对象类型(USER:指定用户,ALL:全体用户)
|
||||||
|
*/
|
||||||
String MSG_TYPE_UESR = "USER";
|
String MSG_TYPE_UESR = "USER";
|
||||||
String MSG_TYPE_ALL = "ALL";
|
String MSG_TYPE_ALL = "ALL";
|
||||||
|
|
||||||
/**发布状态(0未发布,1已发布,2已撤销)*/
|
/**
|
||||||
|
* 发布状态(0未发布,1已发布,2已撤销)
|
||||||
|
*/
|
||||||
String NO_SEND = "0";
|
String NO_SEND = "0";
|
||||||
String HAS_SEND = "1";
|
String HAS_SEND = "1";
|
||||||
String HAS_CANCLE = "2";
|
String HAS_CANCLE = "2";
|
||||||
|
|
||||||
/**阅读状态(0未读,1已读)*/
|
/**
|
||||||
|
* 阅读状态(0未读,1已读)
|
||||||
|
*/
|
||||||
Integer HAS_READ_FLAG = 1;
|
Integer HAS_READ_FLAG = 1;
|
||||||
Integer NO_READ_FLAG = 0;
|
Integer NO_READ_FLAG = 0;
|
||||||
|
|
||||||
/**优先级(L低,M中,H高)*/
|
/**
|
||||||
|
* 优先级(L低,M中,H高)
|
||||||
|
*/
|
||||||
String PRIORITY_L = "L";
|
String PRIORITY_L = "L";
|
||||||
String PRIORITY_M = "M";
|
String PRIORITY_M = "M";
|
||||||
String PRIORITY_H = "H";
|
String PRIORITY_H = "H";
|
||||||
@@ -170,9 +194,13 @@ public interface CommonConstant {
|
|||||||
Integer USER_FREEZE = 2;
|
Integer USER_FREEZE = 2;
|
||||||
Integer USER_QUIT = 3;
|
Integer USER_QUIT = 3;
|
||||||
|
|
||||||
/**字典翻译文本后缀*/
|
/**
|
||||||
|
* 字典翻译文本后缀
|
||||||
|
*/
|
||||||
String DICT_TEXT_SUFFIX = "_dictText";
|
String DICT_TEXT_SUFFIX = "_dictText";
|
||||||
/**字典翻译颜色后缀*/
|
/**
|
||||||
|
* 字典翻译颜色后缀
|
||||||
|
*/
|
||||||
String DICT_COLOR_SUFFIX = "_dictColor";
|
String DICT_COLOR_SUFFIX = "_dictColor";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -248,26 +276,46 @@ public interface CommonConstant {
|
|||||||
Integer USER_IDENTITY_1 = 1;
|
Integer USER_IDENTITY_1 = 1;
|
||||||
Integer USER_IDENTITY_2 = 2;
|
Integer USER_IDENTITY_2 = 2;
|
||||||
|
|
||||||
/** sys_user 表 username 唯一键索引 */
|
/**
|
||||||
|
* sys_user 表 username 唯一键索引
|
||||||
|
*/
|
||||||
String SQL_INDEX_UNIQ_SYS_USER_USERNAME = "uniq_sys_user_username";
|
String SQL_INDEX_UNIQ_SYS_USER_USERNAME = "uniq_sys_user_username";
|
||||||
/** sys_user 表 work_no 唯一键索引 */
|
/**
|
||||||
|
* sys_user 表 work_no 唯一键索引
|
||||||
|
*/
|
||||||
String SQL_INDEX_UNIQ_SYS_USER_WORK_NO = "uniq_sys_user_work_no";
|
String SQL_INDEX_UNIQ_SYS_USER_WORK_NO = "uniq_sys_user_work_no";
|
||||||
/** sys_user 表 phone 唯一键索引 */
|
/**
|
||||||
|
* sys_user 表 phone 唯一键索引
|
||||||
|
*/
|
||||||
String SQL_INDEX_UNIQ_SYS_USER_PHONE = "uniq_sys_user_phone";
|
String SQL_INDEX_UNIQ_SYS_USER_PHONE = "uniq_sys_user_phone";
|
||||||
/** 达梦数据库升提示。违反表[SYS_USER]唯一性约束 */
|
/**
|
||||||
|
* 达梦数据库升提示。违反表[SYS_USER]唯一性约束
|
||||||
|
*/
|
||||||
String SQL_INDEX_UNIQ_SYS_USER = "唯一性约束";
|
String SQL_INDEX_UNIQ_SYS_USER = "唯一性约束";
|
||||||
|
|
||||||
/** sys_user 表 email 唯一键索引 */
|
/**
|
||||||
|
* sys_user 表 email 唯一键索引
|
||||||
|
*/
|
||||||
String SQL_INDEX_UNIQ_SYS_USER_EMAIL = "uniq_sys_user_email";
|
String SQL_INDEX_UNIQ_SYS_USER_EMAIL = "uniq_sys_user_email";
|
||||||
/** sys_quartz_job 表 job_class_name 唯一键索引 */
|
/**
|
||||||
|
* sys_quartz_job 表 job_class_name 唯一键索引
|
||||||
|
*/
|
||||||
String SQL_INDEX_UNIQ_JOB_CLASS_NAME = "uniq_job_class_name";
|
String SQL_INDEX_UNIQ_JOB_CLASS_NAME = "uniq_job_class_name";
|
||||||
/** sys_position 表 code 唯一键索引 */
|
/**
|
||||||
|
* sys_position 表 code 唯一键索引
|
||||||
|
*/
|
||||||
String SQL_INDEX_UNIQ_CODE = "uniq_code";
|
String SQL_INDEX_UNIQ_CODE = "uniq_code";
|
||||||
/** sys_role 表 code 唯一键索引 */
|
/**
|
||||||
|
* sys_role 表 code 唯一键索引
|
||||||
|
*/
|
||||||
String SQL_INDEX_UNIQ_SYS_ROLE_CODE = "uniq_sys_role_role_code";
|
String SQL_INDEX_UNIQ_SYS_ROLE_CODE = "uniq_sys_role_role_code";
|
||||||
/** sys_depart 表 code 唯一键索引 */
|
/**
|
||||||
|
* sys_depart 表 code 唯一键索引
|
||||||
|
*/
|
||||||
String SQL_INDEX_UNIQ_DEPART_ORG_CODE = "uniq_depart_org_code";
|
String SQL_INDEX_UNIQ_DEPART_ORG_CODE = "uniq_depart_org_code";
|
||||||
/** sys_category 表 code 唯一键索引 */
|
/**
|
||||||
|
* sys_category 表 code 唯一键索引
|
||||||
|
*/
|
||||||
String SQL_INDEX_UNIQ_CATEGORY_CODE = "idx_sc_code";
|
String SQL_INDEX_UNIQ_CATEGORY_CODE = "idx_sc_code";
|
||||||
/**
|
/**
|
||||||
* 在线聊天 是否为默认分组
|
* 在线聊天 是否为默认分组
|
||||||
@@ -331,11 +379,17 @@ public interface CommonConstant {
|
|||||||
String X_ACCESS_TOKEN = "X-Access-Token";
|
String X_ACCESS_TOKEN = "X-Access-Token";
|
||||||
String X_SIGN = "X-Sign";
|
String X_SIGN = "X-Sign";
|
||||||
String X_TIMESTAMP = "X-TIMESTAMP";
|
String X_TIMESTAMP = "X-TIMESTAMP";
|
||||||
/** 租户请求头 更名为:X-Tenant-Id */
|
/**
|
||||||
|
* 租户请求头 更名为:X-Tenant-Id
|
||||||
|
*/
|
||||||
String TENANT_ID = "X-Tenant-Id";
|
String TENANT_ID = "X-Tenant-Id";
|
||||||
/** 简流接口请求头,用于排除不支持的控件字段 */
|
/**
|
||||||
|
* 简流接口请求头,用于排除不支持的控件字段
|
||||||
|
*/
|
||||||
String X_MiniFlowExclusionFieldMode = "X-Miniflowexclusionfieldmode";
|
String X_MiniFlowExclusionFieldMode = "X-Miniflowexclusionfieldmode";
|
||||||
/**===============================================================================================*/
|
/**
|
||||||
|
* ===============================================================================================
|
||||||
|
*/
|
||||||
|
|
||||||
String TOKEN_IS_INVALID_MSG = "Token失效,请重新登录!";
|
String TOKEN_IS_INVALID_MSG = "Token失效,请重新登录!";
|
||||||
String X_FORWARDED_SCHEME = "X-Forwarded-Scheme";
|
String X_FORWARDED_SCHEME = "X-Forwarded-Scheme";
|
||||||
@@ -360,40 +414,64 @@ public interface CommonConstant {
|
|||||||
*/
|
*/
|
||||||
String THIRD_SYNC_TO_LOCAL = "SYNC_TO_LOCAL";
|
String THIRD_SYNC_TO_LOCAL = "SYNC_TO_LOCAL";
|
||||||
|
|
||||||
/** 系统通告消息状态:0=未发布 */
|
/**
|
||||||
|
* 系统通告消息状态:0=未发布
|
||||||
|
*/
|
||||||
String ANNOUNCEMENT_SEND_STATUS_0 = "0";
|
String ANNOUNCEMENT_SEND_STATUS_0 = "0";
|
||||||
/** 系统通告消息状态:1=已发布 */
|
/**
|
||||||
|
* 系统通告消息状态:1=已发布
|
||||||
|
*/
|
||||||
String ANNOUNCEMENT_SEND_STATUS_1 = "1";
|
String ANNOUNCEMENT_SEND_STATUS_1 = "1";
|
||||||
/** 系统通告消息状态:2=已撤销 */
|
/**
|
||||||
|
* 系统通告消息状态:2=已撤销
|
||||||
|
*/
|
||||||
String ANNOUNCEMENT_SEND_STATUS_2 = "2";
|
String ANNOUNCEMENT_SEND_STATUS_2 = "2";
|
||||||
|
|
||||||
/**ONLINE 报表权限用 从request中获取地址栏后的参数*/
|
/**
|
||||||
|
* ONLINE 报表权限用 从request中获取地址栏后的参数
|
||||||
|
*/
|
||||||
String ONL_REP_URL_PARAM_STR = "onlRepUrlParamStr";
|
String ONL_REP_URL_PARAM_STR = "onlRepUrlParamStr";
|
||||||
|
|
||||||
/**POST请求*/
|
/**
|
||||||
|
* POST请求
|
||||||
|
*/
|
||||||
String HTTP_POST = "POST";
|
String HTTP_POST = "POST";
|
||||||
|
|
||||||
/**PUT请求*/
|
/**
|
||||||
|
* PUT请求
|
||||||
|
*/
|
||||||
String HTTP_PUT = "PUT";
|
String HTTP_PUT = "PUT";
|
||||||
|
|
||||||
/**PATCH请求*/
|
/**
|
||||||
|
* PATCH请求
|
||||||
|
*/
|
||||||
String HTTP_PATCH = "PATCH";
|
String HTTP_PATCH = "PATCH";
|
||||||
|
|
||||||
/**未知的*/
|
/**
|
||||||
|
* 未知的
|
||||||
|
*/
|
||||||
String UNKNOWN = "unknown";
|
String UNKNOWN = "unknown";
|
||||||
|
|
||||||
/**字符串http*/
|
/**
|
||||||
|
* 字符串http
|
||||||
|
*/
|
||||||
String STR_HTTP = "http";
|
String STR_HTTP = "http";
|
||||||
|
|
||||||
/**String 类型的空值*/
|
/**
|
||||||
|
* String 类型的空值
|
||||||
|
*/
|
||||||
String STRING_NULL = "null";
|
String STRING_NULL = "null";
|
||||||
|
|
||||||
/**前端vue3版本Header参数名*/
|
/**
|
||||||
|
* 前端vue3版本Header参数名
|
||||||
|
*/
|
||||||
String VERSION = "X-Version";
|
String VERSION = "X-Version";
|
||||||
|
|
||||||
String VERSION_V3 = "v3";
|
String VERSION_V3 = "v3";
|
||||||
|
|
||||||
/**存储在线程变量里的动态表名*/
|
/**
|
||||||
|
* 存储在线程变量里的动态表名
|
||||||
|
*/
|
||||||
String DYNAMIC_TABLE_NAME = "DYNAMIC_TABLE_NAME";
|
String DYNAMIC_TABLE_NAME = "DYNAMIC_TABLE_NAME";
|
||||||
/**
|
/**
|
||||||
* http:// http协议
|
* http:// http协议
|
||||||
@@ -405,9 +483,13 @@ public interface CommonConstant {
|
|||||||
*/
|
*/
|
||||||
String HTTPS_PROTOCOL = "https://";
|
String HTTPS_PROTOCOL = "https://";
|
||||||
|
|
||||||
/** 部门表唯一key,id */
|
/**
|
||||||
|
* 部门表唯一key,id
|
||||||
|
*/
|
||||||
String DEPART_KEY_ID = "id";
|
String DEPART_KEY_ID = "id";
|
||||||
/** 部门表唯一key,orgCode */
|
/**
|
||||||
|
* 部门表唯一key,orgCode
|
||||||
|
*/
|
||||||
String DEPART_KEY_ORG_CODE = "orgCode";
|
String DEPART_KEY_ORG_CODE = "orgCode";
|
||||||
|
|
||||||
/**======【消息推送相关】==============================================================================*/
|
/**======【消息推送相关】==============================================================================*/
|
||||||
@@ -446,7 +528,9 @@ public interface CommonConstant {
|
|||||||
*/
|
*/
|
||||||
String DATA_LOG_TYPE_JSON = "json";
|
String DATA_LOG_TYPE_JSON = "json";
|
||||||
|
|
||||||
/** 消息模板:markdown */
|
/**
|
||||||
|
* 消息模板:markdown
|
||||||
|
*/
|
||||||
String MSG_TEMPLATE_TYPE_MD = "5";
|
String MSG_TEMPLATE_TYPE_MD = "5";
|
||||||
/**========【消息推送相关】==========================================================================*/
|
/**========【消息推送相关】==========================================================================*/
|
||||||
|
|
||||||
@@ -561,7 +645,9 @@ public interface CommonConstant {
|
|||||||
*/
|
*/
|
||||||
String COPY_LEVEL_COVER = "cover";
|
String COPY_LEVEL_COVER = "cover";
|
||||||
|
|
||||||
/** 【QQYUN-6034】关联字段变更历史值,缓存半个小时 */
|
/**
|
||||||
|
* 【QQYUN-6034】关联字段变更历史值,缓存半个小时
|
||||||
|
*/
|
||||||
String CACHE_REL_FIELD_OLD_VAL = "sys:cache:desform:relFieldOldVal:";
|
String CACHE_REL_FIELD_OLD_VAL = "sys:cache:desform:relFieldOldVal:";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package org.jeecg.common.constant;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统通告 - 发布状态
|
* 系统通告 - 发布状态
|
||||||
* @Author LeeShaoQing
|
|
||||||
*
|
*
|
||||||
|
* @Author LeeShaoQing
|
||||||
*/
|
*/
|
||||||
public interface CommonSendStatus {
|
public interface CommonSendStatus {
|
||||||
|
|
||||||
@@ -29,15 +29,25 @@ public interface CommonSendStatus {
|
|||||||
|
|
||||||
|
|
||||||
/**-----【流程相关通知模板code】------------------------------------------------------------*/
|
/**-----【流程相关通知模板code】------------------------------------------------------------*/
|
||||||
/**流程催办——系统通知消息模板*/
|
/**
|
||||||
|
* 流程催办——系统通知消息模板
|
||||||
|
*/
|
||||||
public static final String TZMB_BPM_CUIBAN = "bpm_cuiban";
|
public static final String TZMB_BPM_CUIBAN = "bpm_cuiban";
|
||||||
/**流程抄送——系统通知消息模板*/
|
/**
|
||||||
|
* 流程抄送——系统通知消息模板
|
||||||
|
*/
|
||||||
public static final String TZMB_BPM_CC = "bpm_cc";
|
public static final String TZMB_BPM_CC = "bpm_cc";
|
||||||
/**流程催办——邮件通知消息模板*/
|
/**
|
||||||
|
* 流程催办——邮件通知消息模板
|
||||||
|
*/
|
||||||
public static final String TZMB_BPM_CUIBAN_EMAIL = "bpm_cuiban_email";
|
public static final String TZMB_BPM_CUIBAN_EMAIL = "bpm_cuiban_email";
|
||||||
/**标准模板—系统消息通知*/
|
/**
|
||||||
|
* 标准模板—系统消息通知
|
||||||
|
*/
|
||||||
public static final String TZMB_SYS_TS_NOTE = "sys_ts_note";
|
public static final String TZMB_SYS_TS_NOTE = "sys_ts_note";
|
||||||
/**流程超时提醒——系统通知消息模板*/
|
/**
|
||||||
|
* 流程超时提醒——系统通知消息模板
|
||||||
|
*/
|
||||||
public static final String TZMB_BPM_CHAOSHI_TIP = "bpm_chaoshi_tip";
|
public static final String TZMB_BPM_CHAOSHI_TIP = "bpm_chaoshi_tip";
|
||||||
/**-----【流程相关通知模板code】-----------------------------------------------------------*/
|
/**-----【流程相关通知模板code】-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|||||||
@@ -1,36 +1,56 @@
|
|||||||
package org.jeecg.common.constant;
|
package org.jeecg.common.constant;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据库上下文常量
|
* 数据库上下文常量
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
public interface DataBaseConstant {
|
public interface DataBaseConstant {
|
||||||
//*********数据库类型****************************************
|
//*********数据库类型****************************************
|
||||||
|
|
||||||
/**MYSQL数据库*/
|
/**
|
||||||
|
* MYSQL数据库
|
||||||
|
*/
|
||||||
public static final String DB_TYPE_MYSQL = "MYSQL";
|
public static final String DB_TYPE_MYSQL = "MYSQL";
|
||||||
|
|
||||||
/** ORACLE*/
|
/**
|
||||||
|
* ORACLE
|
||||||
|
*/
|
||||||
public static final String DB_TYPE_ORACLE = "ORACLE";
|
public static final String DB_TYPE_ORACLE = "ORACLE";
|
||||||
|
|
||||||
/**达梦数据库*/
|
/**
|
||||||
|
* 达梦数据库
|
||||||
|
*/
|
||||||
public static final String DB_TYPE_DM = "DM";
|
public static final String DB_TYPE_DM = "DM";
|
||||||
|
|
||||||
/**postgreSQL达梦数据库*/
|
/**
|
||||||
|
* postgreSQL达梦数据库
|
||||||
|
*/
|
||||||
public static final String DB_TYPE_POSTGRESQL = "POSTGRESQL";
|
public static final String DB_TYPE_POSTGRESQL = "POSTGRESQL";
|
||||||
|
|
||||||
/**人大金仓数据库*/
|
/**
|
||||||
|
* 人大金仓数据库
|
||||||
|
*/
|
||||||
public static final String DB_TYPE_KINGBASEES = "KINGBASEES";
|
public static final String DB_TYPE_KINGBASEES = "KINGBASEES";
|
||||||
|
|
||||||
/**sqlserver数据库*/
|
/**
|
||||||
|
* sqlserver数据库
|
||||||
|
*/
|
||||||
public static final String DB_TYPE_SQLSERVER = "SQLSERVER";
|
public static final String DB_TYPE_SQLSERVER = "SQLSERVER";
|
||||||
|
|
||||||
/**mariadb 数据库*/
|
/**
|
||||||
|
* mariadb 数据库
|
||||||
|
*/
|
||||||
public static final String DB_TYPE_MARIADB = "MARIADB";
|
public static final String DB_TYPE_MARIADB = "MARIADB";
|
||||||
|
|
||||||
/**DB2 数据库*/
|
/**
|
||||||
|
* DB2 数据库
|
||||||
|
*/
|
||||||
public static final String DB_TYPE_DB2 = "DB2";
|
public static final String DB_TYPE_DB2 = "DB2";
|
||||||
|
|
||||||
/**HSQL 数据库*/
|
/**
|
||||||
|
* HSQL 数据库
|
||||||
|
*/
|
||||||
public static final String DB_TYPE_HSQL = "HSQL";
|
public static final String DB_TYPE_HSQL = "HSQL";
|
||||||
|
|
||||||
// // 数据库类型,对应 database_type 字典
|
// // 数据库类型,对应 database_type 字典
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.jeecg.common.constant;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 规则值生成 编码常量类
|
* 规则值生成 编码常量类
|
||||||
|
*
|
||||||
* @author: taoyan
|
* @author: taoyan
|
||||||
* @date: 2020年04月02日
|
* @date: 2020年04月02日
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -2,16 +2,12 @@ package org.jeecg.common.constant;
|
|||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import org.jeecg.common.util.oConvertUtils;
|
import org.jeecg.common.util.oConvertUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
|
||||||
import org.springframework.core.io.Resource;
|
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Scanner;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Scanner;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 省市区
|
* @Description: 省市区
|
||||||
@@ -48,8 +44,10 @@ public class ProvinceCityArea {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// update-begin-author:sunjianlei date:20220121 for:【JTC-704】数据导入错误 省市区组件,文件中为北京市,导入后,导为了山西省
|
// update-begin-author:sunjianlei date:20220121 for:【JTC-704】数据导入错误 省市区组件,文件中为北京市,导入后,导为了山西省
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取省市区code,精准匹配
|
* 获取省市区code,精准匹配
|
||||||
|
*
|
||||||
* @param texts 文本数组,省,市,区
|
* @param texts 文本数组,省,市,区
|
||||||
* @return 返回 省市区的code
|
* @return 返回 省市区的code
|
||||||
*/
|
*/
|
||||||
@@ -83,6 +81,7 @@ public class ProvinceCityArea {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据text获取area
|
* 根据text获取area
|
||||||
|
*
|
||||||
* @param text
|
* @param text
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -97,6 +96,7 @@ public class ProvinceCityArea {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过pid获取 area 对象
|
* 通过pid获取 area 对象
|
||||||
|
*
|
||||||
* @param pCode 父级编码
|
* @param pCode 父级编码
|
||||||
* @param text
|
* @param text
|
||||||
* @return
|
* @return
|
||||||
@@ -211,6 +211,7 @@ public class ProvinceCityArea {
|
|||||||
public String getAheadText() {
|
public String getAheadText() {
|
||||||
return aheadText;
|
return aheadText;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setAheadText(String aheadText) {
|
public void setAheadText(String aheadText) {
|
||||||
this.aheadText = aheadText;
|
this.aheadText = aheadText;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.jeecg.common.constant;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* VXESocket 常量
|
* VXESocket 常量
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
public class VxeSocketConst {
|
public class VxeSocketConst {
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* online表单枚举 代码生成器用到
|
* online表单枚举 代码生成器用到
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
public enum CgformEnum {
|
public enum CgformEnum {
|
||||||
@@ -22,7 +23,7 @@ public enum CgformEnum {
|
|||||||
MANY(2, "many", "/jeecg/code-template-online", "default.onetomany", "经典风格", new String[]{"vue"}),
|
MANY(2, "many", "/jeecg/code-template-online", "default.onetomany", "经典风格", new String[]{"vue"}),
|
||||||
/**
|
/**
|
||||||
* 多表(jvxe风格)
|
* 多表(jvxe风格)
|
||||||
* */
|
*/
|
||||||
JVXE_TABLE(2, "jvxe", "/jeecg/code-template-online", "jvxe.onetomany", "默认风格", new String[]{"vue3", "vue", "vue3Native"}),
|
JVXE_TABLE(2, "jvxe", "/jeecg/code-template-online", "jvxe.onetomany", "默认风格", new String[]{"vue3", "vue", "vue3Native"}),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -35,7 +36,7 @@ public enum CgformEnum {
|
|||||||
INNER_TABLE(2, "innerTable", "/jeecg/code-template-online", "inner-table.onetomany", "内嵌子表风格", new String[]{"vue3", "vue"}),
|
INNER_TABLE(2, "innerTable", "/jeecg/code-template-online", "inner-table.onetomany", "内嵌子表风格", new String[]{"vue3", "vue"}),
|
||||||
/**
|
/**
|
||||||
* 多表(tab风格)
|
* 多表(tab风格)
|
||||||
* */
|
*/
|
||||||
TAB(2, "tab", "/jeecg/code-template-online", "tab.onetomany", "Tab风格", new String[]{"vue3", "vue"}),
|
TAB(2, "tab", "/jeecg/code-template-online", "tab.onetomany", "Tab风格", new String[]{"vue3", "vue"}),
|
||||||
/**
|
/**
|
||||||
* 树形列表
|
* 树形列表
|
||||||
|
|||||||
@@ -8,21 +8,37 @@ import org.apache.commons.lang3.StringUtils;
|
|||||||
*/
|
*/
|
||||||
public enum DySmsEnum {
|
public enum DySmsEnum {
|
||||||
|
|
||||||
/**登录短信模板编码*/
|
/**
|
||||||
|
* 登录短信模板编码
|
||||||
|
*/
|
||||||
LOGIN_TEMPLATE_CODE("SMS_175435174", "敲敲云", "code"),
|
LOGIN_TEMPLATE_CODE("SMS_175435174", "敲敲云", "code"),
|
||||||
/**忘记密码短信模板编码*/
|
/**
|
||||||
|
* 忘记密码短信模板编码
|
||||||
|
*/
|
||||||
FORGET_PASSWORD_TEMPLATE_CODE("SMS_175435174", "敲敲云", "code"),
|
FORGET_PASSWORD_TEMPLATE_CODE("SMS_175435174", "敲敲云", "code"),
|
||||||
/**修改密码短信模板编码*/
|
/**
|
||||||
|
* 修改密码短信模板编码
|
||||||
|
*/
|
||||||
CHANGE_PASSWORD_TEMPLATE_CODE("SMS_465391221", "敲敲云", "code"),
|
CHANGE_PASSWORD_TEMPLATE_CODE("SMS_465391221", "敲敲云", "code"),
|
||||||
/**注册账号短信模板编码*/
|
/**
|
||||||
|
* 注册账号短信模板编码
|
||||||
|
*/
|
||||||
REGISTER_TEMPLATE_CODE("SMS_175430166", "敲敲云", "code"),
|
REGISTER_TEMPLATE_CODE("SMS_175430166", "敲敲云", "code"),
|
||||||
/**会议通知*/
|
/**
|
||||||
|
* 会议通知
|
||||||
|
*/
|
||||||
MEET_NOTICE_TEMPLATE_CODE("SMS_201480469", "JEECG", "username,title,minute,time"),
|
MEET_NOTICE_TEMPLATE_CODE("SMS_201480469", "JEECG", "username,title,minute,time"),
|
||||||
/**我的计划通知*/
|
/**
|
||||||
|
* 我的计划通知
|
||||||
|
*/
|
||||||
PLAN_NOTICE_TEMPLATE_CODE("SMS_201470515", "JEECG", "username,title,time"),
|
PLAN_NOTICE_TEMPLATE_CODE("SMS_201470515", "JEECG", "username,title,time"),
|
||||||
/**支付成功短信通知*/
|
/**
|
||||||
|
* 支付成功短信通知
|
||||||
|
*/
|
||||||
PAY_SUCCESS_NOTICE_CODE("SMS_461735163", "敲敲云", "realname,money,endTime"),
|
PAY_SUCCESS_NOTICE_CODE("SMS_461735163", "敲敲云", "realname,money,endTime"),
|
||||||
/**会员到期通知提醒*/
|
/**
|
||||||
|
* 会员到期通知提醒
|
||||||
|
*/
|
||||||
VIP_EXPIRE_NOTICE_CODE("SMS_461885023", "敲敲云", "realname,endTime");
|
VIP_EXPIRE_NOTICE_CODE("SMS_461885023", "敲敲云", "realname,endTime");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -32,11 +32,13 @@ public enum FileTypeEnum {
|
|||||||
private String type;
|
private String type;
|
||||||
private String value;
|
private String value;
|
||||||
private String text;
|
private String text;
|
||||||
|
|
||||||
private FileTypeEnum(String type, String value, String text) {
|
private FileTypeEnum(String type, String value, String text) {
|
||||||
this.type = type;
|
this.type = type;
|
||||||
this.value = value;
|
this.value = value;
|
||||||
this.text = text;
|
this.text = text;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getType() {
|
public String getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,18 +8,27 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 消息类型
|
* 消息类型
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@EnumDict("messageType")
|
@EnumDict("messageType")
|
||||||
public enum MessageTypeEnum {
|
public enum MessageTypeEnum {
|
||||||
|
|
||||||
/** 系统消息 */
|
/**
|
||||||
|
* 系统消息
|
||||||
|
*/
|
||||||
XT("system", "系统消息"),
|
XT("system", "系统消息"),
|
||||||
/** 邮件消息 */
|
/**
|
||||||
|
* 邮件消息
|
||||||
|
*/
|
||||||
YJ("email", "邮件消息"),
|
YJ("email", "邮件消息"),
|
||||||
/** 钉钉消息 */
|
/**
|
||||||
|
* 钉钉消息
|
||||||
|
*/
|
||||||
DD("dingtalk", "钉钉消息"),
|
DD("dingtalk", "钉钉消息"),
|
||||||
/** 企业微信 */
|
/**
|
||||||
|
* 企业微信
|
||||||
|
*/
|
||||||
QYWX("wechat_enterprise", "企业微信");
|
QYWX("wechat_enterprise", "企业微信");
|
||||||
|
|
||||||
MessageTypeEnum(String type, String note) {
|
MessageTypeEnum(String type, String note) {
|
||||||
@@ -56,6 +65,7 @@ public enum MessageTypeEnum {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取字典数据
|
* 获取字典数据
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static List<DictModel> getDictList() {
|
public static List<DictModel> getDictList() {
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package org.jeecg.common.constant.enums;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 日志按模块分类
|
* 日志按模块分类
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
public enum ModuleType {
|
public enum ModuleType {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.util.List;
|
|||||||
* 首页自定义
|
* 首页自定义
|
||||||
* 通过角色编码与首页组件路径配置
|
* 通过角色编码与首页组件路径配置
|
||||||
* 枚举的顺序有权限高低权重作用(也就是配置多个角色,在前面的角色首页,会优先生效)
|
* 枚举的顺序有权限高低权重作用(也就是配置多个角色,在前面的角色首页,会优先生效)
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
public enum RoleIndexConfigEnum {
|
public enum RoleIndexConfigEnum {
|
||||||
@@ -15,7 +16,9 @@ public enum RoleIndexConfigEnum {
|
|||||||
/**首页自定义 admin*/
|
/**首页自定义 admin*/
|
||||||
// ADMIN("admin", "dashboard/Analysis"),
|
// ADMIN("admin", "dashboard/Analysis"),
|
||||||
//TEST("test", "dashboard/IndexChart"),
|
//TEST("test", "dashboard/IndexChart"),
|
||||||
/**首页自定义 hr*/
|
/**
|
||||||
|
* 首页自定义 hr
|
||||||
|
*/
|
||||||
// HR("hr", "dashboard/IndexBdc");
|
// HR("hr", "dashboard/IndexBdc");
|
||||||
|
|
||||||
//DM("dm", "dashboard/IndexTask"),
|
//DM("dm", "dashboard/IndexTask"),
|
||||||
@@ -42,8 +45,10 @@ public enum RoleIndexConfigEnum {
|
|||||||
this.roleCode = roleCode;
|
this.roleCode = roleCode;
|
||||||
this.componentUrl = componentUrl;
|
this.componentUrl = componentUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据code找枚举
|
* 根据code找枚举
|
||||||
|
*
|
||||||
* @param roleCode 角色编码
|
* @param roleCode 角色编码
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -55,8 +60,10 @@ public enum RoleIndexConfigEnum {
|
|||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据code找index
|
* 根据code找index
|
||||||
|
*
|
||||||
* @param roleCode 角色编码
|
* @param roleCode 角色编码
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import org.jeecg.common.util.oConvertUtils;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 系统公告自定义跳转方式
|
* 系统公告自定义跳转方式
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
public enum SysAnnmentTypeEnum {
|
public enum SysAnnmentTypeEnum {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 消息跳转【vue3】
|
* 消息跳转【vue3】
|
||||||
|
*
|
||||||
* @Author taoYan
|
* @Author taoYan
|
||||||
* @Date 2022/8/19 20:41
|
* @Date 2022/8/19 20:41
|
||||||
**/
|
**/
|
||||||
@@ -58,6 +59,7 @@ public enum Vue3MessageHrefEnum {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取字典数据
|
* 获取字典数据
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static List<DictModel> getDictList() {
|
public static List<DictModel> getDictList() {
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ public @interface Sensitive {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 不同类型处理不同
|
* 不同类型处理不同
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SensitiveEnum type() default SensitiveEnum.ENCODE;
|
SensitiveEnum type() default SensitiveEnum.ENCODE;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import java.lang.annotation.*;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 解密注解
|
* 解密注解
|
||||||
*
|
* <p>
|
||||||
* 在方法上定义 将方法返回对象中的敏感字段 解密,需要注意的是,如果没有加密过,解密会出问题,返回原字符串
|
* 在方法上定义 将方法返回对象中的敏感字段 解密,需要注意的是,如果没有加密过,解密会出问题,返回原字符串
|
||||||
*/
|
*/
|
||||||
@Documented
|
@Documented
|
||||||
@@ -14,6 +14,7 @@ public @interface SensitiveDecode {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 指明需要脱敏的实体类class
|
* 指明需要脱敏的实体类class
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Class entity() default Object.class;
|
Class entity() default Object.class;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import java.lang.annotation.*;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 加密注解
|
* 加密注解
|
||||||
*
|
* <p>
|
||||||
* 在方法上声明 将方法返回对象中的敏感字段 加密/格式化
|
* 在方法上声明 将方法返回对象中的敏感字段 加密/格式化
|
||||||
*/
|
*/
|
||||||
@Documented
|
@Documented
|
||||||
@@ -14,6 +14,7 @@ public @interface SensitiveEncode {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 指明需要脱敏的实体类class
|
* 指明需要脱敏的实体类class
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
Class entity() default Object.class;
|
Class entity() default Object.class;
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ public @interface SensitiveField {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 不同类型处理不同
|
* 不同类型处理不同
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
SensitiveEnum type() default SensitiveEnum.ENCODE;
|
SensitiveEnum type() default SensitiveEnum.ENCODE;
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 敏感数据切面处理类
|
* 敏感数据切面处理类
|
||||||
|
*
|
||||||
* @Author taoYan
|
* @Author taoYan
|
||||||
* @Date 2022/4/20 17:45
|
* @Date 2022/4/20 17:45
|
||||||
**/
|
**/
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 敏感信息处理工具类
|
* 敏感信息处理工具类
|
||||||
|
*
|
||||||
* @author taoYan
|
* @author taoYan
|
||||||
* @date 2022/4/20 18:01
|
* @date 2022/4/20 18:01
|
||||||
**/
|
**/
|
||||||
@@ -21,6 +22,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理嵌套对象
|
* 处理嵌套对象
|
||||||
|
*
|
||||||
* @param obj 方法返回值
|
* @param obj 方法返回值
|
||||||
* @param entity 实体class
|
* @param entity 实体class
|
||||||
* @param isEncode 是否加密(true: 加密操作 / false:解密操作)
|
* @param isEncode 是否加密(true: 加密操作 / false:解密操作)
|
||||||
@@ -57,6 +59,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理Object
|
* 处理Object
|
||||||
|
*
|
||||||
* @param obj 方法返回值
|
* @param obj 方法返回值
|
||||||
* @param isEncode 是否加密(true: 加密操作 / false:解密操作)
|
* @param isEncode 是否加密(true: 加密操作 / false:解密操作)
|
||||||
* @return
|
* @return
|
||||||
@@ -104,6 +107,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理 List<实体>
|
* 处理 List<实体>
|
||||||
|
*
|
||||||
* @param obj
|
* @param obj
|
||||||
* @param entity
|
* @param entity
|
||||||
* @param isEncode(true: 加密操作 / false:解密操作)
|
* @param isEncode(true: 加密操作 / false:解密操作)
|
||||||
@@ -128,6 +132,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理数据 获取解密后的数据
|
* 处理数据 获取解密后的数据
|
||||||
|
*
|
||||||
* @param data
|
* @param data
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -147,6 +152,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 处理数据 获取加密后的数据 或是格式化后的数据
|
* 处理数据 获取加密后的数据 或是格式化后的数据
|
||||||
|
*
|
||||||
* @param data 字符串
|
* @param data 字符串
|
||||||
* @param sensitiveEnum 类型
|
* @param sensitiveEnum 类型
|
||||||
* @return 处理后的字符串
|
* @return 处理后的字符串
|
||||||
@@ -195,6 +201,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* [中文姓名] 只显示第一个汉字,其他隐藏为2个星号
|
* [中文姓名] 只显示第一个汉字,其他隐藏为2个星号
|
||||||
|
*
|
||||||
* @param fullName 全名
|
* @param fullName 全名
|
||||||
* @return <例子:李**>
|
* @return <例子:李**>
|
||||||
*/
|
*/
|
||||||
@@ -207,6 +214,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* [中文姓名] 只显示第一个汉字,其他隐藏为2个星号
|
* [中文姓名] 只显示第一个汉字,其他隐藏为2个星号
|
||||||
|
*
|
||||||
* @param familyName 姓
|
* @param familyName 姓
|
||||||
* @param firstName 名
|
* @param firstName 名
|
||||||
* @return <例子:李**>
|
* @return <例子:李**>
|
||||||
@@ -220,6 +228,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* [身份证号] 显示最后四位,其他隐藏。共计18位或者15位。
|
* [身份证号] 显示最后四位,其他隐藏。共计18位或者15位。
|
||||||
|
*
|
||||||
* @param id 身份证号
|
* @param id 身份证号
|
||||||
* @return <例子:*************5762>
|
* @return <例子:*************5762>
|
||||||
*/
|
*/
|
||||||
@@ -233,6 +242,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* [固定电话] 后四位,其他隐藏
|
* [固定电话] 后四位,其他隐藏
|
||||||
|
*
|
||||||
* @param num 固定电话
|
* @param num 固定电话
|
||||||
* @return <例子:****1234>
|
* @return <例子:****1234>
|
||||||
*/
|
*/
|
||||||
@@ -245,6 +255,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* [手机号码] 前三位,后四位,其他隐藏
|
* [手机号码] 前三位,后四位,其他隐藏
|
||||||
|
*
|
||||||
* @param num 手机号码
|
* @param num 手机号码
|
||||||
* @return <例子:138******1234>
|
* @return <例子:138******1234>
|
||||||
*/
|
*/
|
||||||
@@ -261,6 +272,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* [地址] 只显示到地区,不显示详细地址;我们要对个人信息增强保护
|
* [地址] 只显示到地区,不显示详细地址;我们要对个人信息增强保护
|
||||||
|
*
|
||||||
* @param address 地址
|
* @param address 地址
|
||||||
* @param sensitiveSize 敏感信息长度
|
* @param sensitiveSize 敏感信息长度
|
||||||
* @return <例子:北京市海淀区****>
|
* @return <例子:北京市海淀区****>
|
||||||
@@ -278,6 +290,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* [电子邮箱] 邮箱前缀仅显示第一个字母,前缀其他隐藏,用星号代替,@及后面的地址显示
|
* [电子邮箱] 邮箱前缀仅显示第一个字母,前缀其他隐藏,用星号代替,@及后面的地址显示
|
||||||
|
*
|
||||||
* @param email 电子邮箱
|
* @param email 电子邮箱
|
||||||
* @return <例子:g**@163.com>
|
* @return <例子:g**@163.com>
|
||||||
*/
|
*/
|
||||||
@@ -297,6 +310,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* [银行卡号] 前六位,后四位,其他用星号隐藏每位1个星号
|
* [银行卡号] 前六位,后四位,其他用星号隐藏每位1个星号
|
||||||
|
*
|
||||||
* @param cardNum 银行卡号
|
* @param cardNum 银行卡号
|
||||||
* @return <例子:6222600**********1234>
|
* @return <例子:6222600**********1234>
|
||||||
*/
|
*/
|
||||||
@@ -309,6 +323,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* [公司开户银行联号] 公司开户银行联行号,显示前两位,其他用星号隐藏,每位1个星号
|
* [公司开户银行联号] 公司开户银行联行号,显示前两位,其他用星号隐藏,每位1个星号
|
||||||
|
*
|
||||||
* @param code 公司开户银行联号
|
* @param code 公司开户银行联号
|
||||||
* @return <例子:12********>
|
* @return <例子:12********>
|
||||||
*/
|
*/
|
||||||
@@ -322,6 +337,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将右边的格式化成*
|
* 将右边的格式化成*
|
||||||
|
*
|
||||||
* @param str 字符串
|
* @param str 字符串
|
||||||
* @param reservedLength 保留长度
|
* @param reservedLength 保留长度
|
||||||
* @return 格式化后的字符串
|
* @return 格式化后的字符串
|
||||||
@@ -334,6 +350,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将左边的格式化成*
|
* 将左边的格式化成*
|
||||||
|
*
|
||||||
* @param str 字符串
|
* @param str 字符串
|
||||||
* @param reservedLength 保留长度
|
* @param reservedLength 保留长度
|
||||||
* @return 格式化后的字符串
|
* @return 格式化后的字符串
|
||||||
@@ -347,6 +364,7 @@ public class SensitiveInfoUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将中间的格式化成*
|
* 将中间的格式化成*
|
||||||
|
*
|
||||||
* @param str 字符串
|
* @param str 字符串
|
||||||
* @param beginLen 开始保留长度
|
* @param beginLen 开始保留长度
|
||||||
* @param endLen 结尾保留长度
|
* @param endLen 结尾保留长度
|
||||||
|
|||||||
@@ -25,19 +25,29 @@ import java.util.*;
|
|||||||
@Component
|
@Component
|
||||||
@ConditionalOnProperty(prefix = "jeecg.elasticsearch", name = "cluster-nodes")
|
@ConditionalOnProperty(prefix = "jeecg.elasticsearch", name = "cluster-nodes")
|
||||||
public class JeecgElasticsearchTemplate {
|
public class JeecgElasticsearchTemplate {
|
||||||
/** es服务地址 */
|
/**
|
||||||
|
* es服务地址
|
||||||
|
*/
|
||||||
private String baseUrl;
|
private String baseUrl;
|
||||||
private final String FORMAT_JSON = "format=json";
|
private final String FORMAT_JSON = "format=json";
|
||||||
/** Elasticsearch 的版本号 */
|
/**
|
||||||
|
* Elasticsearch 的版本号
|
||||||
|
*/
|
||||||
private String version = null;
|
private String version = null;
|
||||||
|
|
||||||
/**ElasticSearch 最大可返回条目数*/
|
/**
|
||||||
|
* ElasticSearch 最大可返回条目数
|
||||||
|
*/
|
||||||
public static final int ES_MAX_SIZE = 10000;
|
public static final int ES_MAX_SIZE = 10000;
|
||||||
|
|
||||||
/**es7*/
|
/**
|
||||||
|
* es7
|
||||||
|
*/
|
||||||
public static final String IE_SEVEN = "7";
|
public static final String IE_SEVEN = "7";
|
||||||
|
|
||||||
/**url not found 404*/
|
/**
|
||||||
|
* url not found 404
|
||||||
|
*/
|
||||||
public static final String URL_NOT_FOUND = "404 Not Found";
|
public static final String URL_NOT_FOUND = "404 Not Found";
|
||||||
|
|
||||||
public JeecgElasticsearchTemplate(@Value("${jeecg.elasticsearch.cluster-nodes}") String baseUrl, @Value("${jeecg.elasticsearch.check-enabled}") boolean checkEnabled) {
|
public JeecgElasticsearchTemplate(@Value("${jeecg.elasticsearch.cluster-nodes}") String baseUrl, @Value("${jeecg.elasticsearch.check-enabled}") boolean checkEnabled) {
|
||||||
|
|||||||
@@ -74,6 +74,7 @@ public class QueryStringBuilder {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否在两边加上双引号
|
* 是否在两边加上双引号
|
||||||
|
*
|
||||||
* @param builder
|
* @param builder
|
||||||
* @param str
|
* @param str
|
||||||
* @param addQuot
|
* @param addQuot
|
||||||
|
|||||||
@@ -11,13 +11,11 @@ public class JeecgBoot401Exception extends RuntimeException {
|
|||||||
super(message);
|
super(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JeecgBoot401Exception(Throwable cause)
|
public JeecgBoot401Exception(Throwable cause) {
|
||||||
{
|
|
||||||
super(cause);
|
super(cause);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JeecgBoot401Exception(String message, Throwable cause)
|
public JeecgBoot401Exception(String message, Throwable cause) {
|
||||||
{
|
|
||||||
super(message, cause);
|
super(message, cause);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,13 +28,11 @@ public class JeecgBootBizTipException extends RuntimeException {
|
|||||||
return errCode;
|
return errCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JeecgBootBizTipException(Throwable cause)
|
public JeecgBootBizTipException(Throwable cause) {
|
||||||
{
|
|
||||||
super(cause);
|
super(cause);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JeecgBootBizTipException(String message, Throwable cause)
|
public JeecgBootBizTipException(String message, Throwable cause) {
|
||||||
{
|
|
||||||
super(message, cause);
|
super(message, cause);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,13 +27,11 @@ public class JeecgBootException extends RuntimeException {
|
|||||||
return errCode;
|
return errCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
public JeecgBootException(Throwable cause)
|
public JeecgBootException(Throwable cause) {
|
||||||
{
|
|
||||||
super(cause);
|
super(cause);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JeecgBootException(String message,Throwable cause)
|
public JeecgBootException(String message, Throwable cause) {
|
||||||
{
|
|
||||||
super(message, cause);
|
super(message, cause);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -122,9 +122,9 @@ public class JeecgBootExceptionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author 政辉
|
|
||||||
* @param e
|
* @param e
|
||||||
* @return
|
* @return
|
||||||
|
* @Author 政辉
|
||||||
*/
|
*/
|
||||||
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
|
@ExceptionHandler(HttpRequestMethodNotSupportedException.class)
|
||||||
public Result<?> httpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
|
public Result<?> httpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
|
||||||
@@ -193,8 +193,10 @@ public class JeecgBootExceptionHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//update-begin---author:chenrui ---date:20240423 for:[QQYUN-8732]把错误的日志都抓取了 方便后续处理,单独弄个日志类型------------
|
//update-begin---author:chenrui ---date:20240423 for:[QQYUN-8732]把错误的日志都抓取了 方便后续处理,单独弄个日志类型------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加异常新系统日志
|
* 添加异常新系统日志
|
||||||
|
*
|
||||||
* @param e 异常
|
* @param e 异常
|
||||||
* @author chenrui
|
* @author chenrui
|
||||||
* @date 2024/4/22 17:16
|
* @date 2024/4/22 17:16
|
||||||
|
|||||||
@@ -11,13 +11,11 @@ public class JeecgSqlInjectionException extends RuntimeException {
|
|||||||
super(message);
|
super(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JeecgSqlInjectionException(Throwable cause)
|
public JeecgSqlInjectionException(Throwable cause) {
|
||||||
{
|
|
||||||
super(cause);
|
super(cause);
|
||||||
}
|
}
|
||||||
|
|
||||||
public JeecgSqlInjectionException(String message, Throwable cause)
|
public JeecgSqlInjectionException(String message, Throwable cause) {
|
||||||
{
|
|
||||||
super(message, cause);
|
super(message, cause);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public interface IFillRuleHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 填值规则
|
* 填值规则
|
||||||
|
*
|
||||||
* @param params 页面配置固定参数
|
* @param params 页面配置固定参数
|
||||||
* @param formData 动态表单参数
|
* @param formData 动态表单参数
|
||||||
* @return
|
* @return
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import java.lang.annotation.*;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将枚举类转化成字典数据
|
* 将枚举类转化成字典数据
|
||||||
|
*
|
||||||
* @Author taoYan
|
* @Author taoYan
|
||||||
* @Date 2022/7/8 10:34
|
* @Date 2022/7/8 10:34
|
||||||
**/
|
**/
|
||||||
|
|||||||
@@ -4,6 +4,9 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.IService;
|
import com.baomidou.mybatisplus.extension.service.IService;
|
||||||
|
import jakarta.annotation.Resource;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.beanutils.PropertyUtils;
|
import org.apache.commons.beanutils.PropertyUtils;
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
@@ -23,9 +26,6 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
import org.springframework.web.multipart.MultipartHttpServletRequest;
|
||||||
import org.springframework.web.servlet.ModelAndView;
|
import org.springframework.web.servlet.ModelAndView;
|
||||||
|
|
||||||
import jakarta.annotation.Resource;
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -37,7 +37,9 @@ import java.util.*;
|
|||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class JeecgController<T, S extends IService<T>> {
|
public class JeecgController<T, S extends IService<T>> {
|
||||||
/**issues/2933 JeecgController注入service时改用protected修饰,能避免重复引用service*/
|
/**
|
||||||
|
* issues/2933 JeecgController注入service时改用protected修饰,能避免重复引用service
|
||||||
|
*/
|
||||||
@Autowired
|
@Autowired
|
||||||
protected S service;
|
protected S service;
|
||||||
@Resource
|
@Resource
|
||||||
@@ -75,6 +77,7 @@ public class JeecgController<T, S extends IService<T>> {
|
|||||||
mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
|
mv.addObject(NormalExcelConstants.DATA_LIST, exportList);
|
||||||
return mv;
|
return mv;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据每页sheet数量导出多sheet
|
* 根据每页sheet数量导出多sheet
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -1,18 +1,16 @@
|
|||||||
package org.jeecg.common.system.base.entity;
|
package org.jeecg.common.system.base.entity;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
import io.swagger.v3.oas.annotations.media.Schema;
|
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: Entity基类
|
* @Description: Entity基类
|
||||||
|
|||||||
@@ -1,11 +1,10 @@
|
|||||||
package org.jeecg.common.system.base.service.impl;
|
package org.jeecg.common.system.base.service.impl;
|
||||||
|
|
||||||
import org.jeecg.common.system.base.entity.JeecgEntity;
|
|
||||||
import org.jeecg.common.system.base.service.JeecgService;
|
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.jeecg.common.system.base.entity.JeecgEntity;
|
||||||
|
import org.jeecg.common.system.base.service.JeecgService;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: ServiceImpl基类
|
* @Description: ServiceImpl基类
|
||||||
|
|||||||
@@ -9,8 +9,8 @@ public interface UserFilterEnhance {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取用户id
|
* 获取用户id
|
||||||
* @param loginUserId 当前登录的用户id
|
|
||||||
*
|
*
|
||||||
|
* @param loginUserId 当前登录的用户id
|
||||||
* @return List<String> 返回多个用户id
|
* @return List<String> 返回多个用户id
|
||||||
*/
|
*/
|
||||||
default List<String> getUserIds(String loginUserId) {
|
default List<String> getUserIds(String loginUserId) {
|
||||||
|
|||||||
@@ -9,9 +9,13 @@ import org.jeecg.common.util.oConvertUtils;
|
|||||||
*/
|
*/
|
||||||
public enum MatchTypeEnum {
|
public enum MatchTypeEnum {
|
||||||
|
|
||||||
/**查询链接规则 AND*/
|
/**
|
||||||
|
* 查询链接规则 AND
|
||||||
|
*/
|
||||||
AND("AND"),
|
AND("AND"),
|
||||||
/**查询链接规则 OR*/
|
/**
|
||||||
|
* 查询链接规则 OR
|
||||||
|
*/
|
||||||
OR("OR");
|
OR("OR");
|
||||||
|
|
||||||
private String value;
|
private String value;
|
||||||
|
|||||||
@@ -11,7 +11,9 @@ public class QueryCondition implements Serializable {
|
|||||||
private static final long serialVersionUID = 4740166316629191651L;
|
private static final long serialVersionUID = 4740166316629191651L;
|
||||||
|
|
||||||
private String field;
|
private String field;
|
||||||
/** 组件的类型(例如:input、select、radio) */
|
/**
|
||||||
|
* 组件的类型(例如:input、select、radio)
|
||||||
|
*/
|
||||||
private String type;
|
private String type;
|
||||||
/**
|
/**
|
||||||
* 对应的数据库字段的类型
|
* 对应的数据库字段的类型
|
||||||
|
|||||||
@@ -1,16 +1,8 @@
|
|||||||
package org.jeecg.common.system.query;
|
package org.jeecg.common.system.query;
|
||||||
|
|
||||||
import java.beans.PropertyDescriptor;
|
import com.alibaba.fastjson.JSON;
|
||||||
import java.io.UnsupportedEncodingException;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import java.math.BigDecimal;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import java.net.URLDecoder;
|
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.*;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import org.apache.commons.beanutils.PropertyUtils;
|
import org.apache.commons.beanutils.PropertyUtils;
|
||||||
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.constant.CommonConstant;
|
||||||
import org.jeecg.common.constant.DataBaseConstant;
|
import org.jeecg.common.constant.DataBaseConstant;
|
||||||
@@ -22,10 +14,16 @@ import org.jeecg.common.system.vo.SysPermissionDataRuleModel;
|
|||||||
import org.jeecg.common.util.*;
|
import org.jeecg.common.util.*;
|
||||||
import org.springframework.util.NumberUtils;
|
import org.springframework.util.NumberUtils;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSON;
|
import java.beans.PropertyDescriptor;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import java.math.BigDecimal;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import java.net.URLDecoder;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 查询生成器
|
* @Description: 查询生成器
|
||||||
@@ -48,31 +46,52 @@ public class QueryGenerator {
|
|||||||
*/
|
*/
|
||||||
public static final String QUERY_COMMA_ESCAPE = "++";
|
public static final String QUERY_COMMA_ESCAPE = "++";
|
||||||
private static final String NOT_EQUAL = "!";
|
private static final String NOT_EQUAL = "!";
|
||||||
/**页面带有规则值查询,空格作为分隔符*/
|
/**
|
||||||
|
* 页面带有规则值查询,空格作为分隔符
|
||||||
|
*/
|
||||||
private static final String QUERY_SEPARATE_KEYWORD = " ";
|
private static final String QUERY_SEPARATE_KEYWORD = " ";
|
||||||
/**高级查询前端传来的参数名*/
|
/**
|
||||||
|
* 高级查询前端传来的参数名
|
||||||
|
*/
|
||||||
private static final String SUPER_QUERY_PARAMS = "superQueryParams";
|
private static final String SUPER_QUERY_PARAMS = "superQueryParams";
|
||||||
/** 高级查询前端传来的拼接方式参数名 */
|
/**
|
||||||
|
* 高级查询前端传来的拼接方式参数名
|
||||||
|
*/
|
||||||
private static final String SUPER_QUERY_MATCH_TYPE = "superQueryMatchType";
|
private static final String SUPER_QUERY_MATCH_TYPE = "superQueryMatchType";
|
||||||
/** 单引号 */
|
/**
|
||||||
|
* 单引号
|
||||||
|
*/
|
||||||
public static final String SQL_SQ = "'";
|
public static final String SQL_SQ = "'";
|
||||||
/**排序列*/
|
/**
|
||||||
|
* 排序列
|
||||||
|
*/
|
||||||
private static final String ORDER_COLUMN = "column";
|
private static final String ORDER_COLUMN = "column";
|
||||||
/**排序方式*/
|
/**
|
||||||
|
* 排序方式
|
||||||
|
*/
|
||||||
private static final String ORDER_TYPE = "order";
|
private static final String ORDER_TYPE = "order";
|
||||||
private static final String ORDER_TYPE_ASC = "ASC";
|
private static final String ORDER_TYPE_ASC = "ASC";
|
||||||
|
|
||||||
/**mysql 模糊查询之特殊字符下划线 (_、\)*/
|
/**
|
||||||
|
* mysql 模糊查询之特殊字符下划线 (_、\)
|
||||||
|
*/
|
||||||
public static final String LIKE_MYSQL_SPECIAL_STRS = "_,%";
|
public static final String LIKE_MYSQL_SPECIAL_STRS = "_,%";
|
||||||
|
|
||||||
/**日期格式化yyyy-MM-dd*/
|
/**
|
||||||
|
* 日期格式化yyyy-MM-dd
|
||||||
|
*/
|
||||||
public static final String YYYY_MM_DD = "yyyy-MM-dd";
|
public static final String YYYY_MM_DD = "yyyy-MM-dd";
|
||||||
|
|
||||||
/**to_date*/
|
/**
|
||||||
|
* to_date
|
||||||
|
*/
|
||||||
public static final String TO_DATE = "to_date";
|
public static final String TO_DATE = "to_date";
|
||||||
|
|
||||||
/**时间格式化 */
|
/**
|
||||||
|
* 时间格式化
|
||||||
|
*/
|
||||||
private static final ThreadLocal<SimpleDateFormat> LOCAL = new ThreadLocal<SimpleDateFormat>();
|
private static final ThreadLocal<SimpleDateFormat> LOCAL = new ThreadLocal<SimpleDateFormat>();
|
||||||
|
|
||||||
private static SimpleDateFormat getTime() {
|
private static SimpleDateFormat getTime() {
|
||||||
SimpleDateFormat time = LOCAL.get();
|
SimpleDateFormat time = LOCAL.get();
|
||||||
if (time == null) {
|
if (time == null) {
|
||||||
@@ -84,6 +103,7 @@ public class QueryGenerator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取查询条件构造器QueryWrapper实例 通用查询条件已被封装完成
|
* 获取查询条件构造器QueryWrapper实例 通用查询条件已被封装完成
|
||||||
|
*
|
||||||
* @param searchObj 查询实体
|
* @param searchObj 查询实体
|
||||||
* @param parameterMap request.getParameterMap()
|
* @param parameterMap request.getParameterMap()
|
||||||
* @return QueryWrapper实例
|
* @return QueryWrapper实例
|
||||||
@@ -97,8 +117,10 @@ public class QueryGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//update-begin---author:chenrui ---date:20240527 for:[TV360X-378]增加自定义字段查询规则功能------------
|
//update-begin---author:chenrui ---date:20240527 for:[TV360X-378]增加自定义字段查询规则功能------------
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取查询条件构造器QueryWrapper实例 通用查询条件已被封装完成
|
* 获取查询条件构造器QueryWrapper实例 通用查询条件已被封装完成
|
||||||
|
*
|
||||||
* @param searchObj 查询实体
|
* @param searchObj 查询实体
|
||||||
* @param parameterMap request.getParameterMap()
|
* @param parameterMap request.getParameterMap()
|
||||||
* @param customRuleMap 自定义字段查询规则 {field:QueryRuleEnum}
|
* @param customRuleMap 自定义字段查询规则 {field:QueryRuleEnum}
|
||||||
@@ -223,6 +245,7 @@ public class QueryGenerator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 区间查询
|
* 区间查询
|
||||||
|
*
|
||||||
* @param queryWrapper query对象
|
* @param queryWrapper query对象
|
||||||
* @param parameterMap 参数map
|
* @param parameterMap 参数map
|
||||||
* @param type 字段类型
|
* @param type 字段类型
|
||||||
@@ -311,8 +334,10 @@ public class QueryGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//update-begin-author:taoyan date:2022-5-23 for: issues/3676 获取系统用户列表时,使用SQL注入生效
|
//update-begin-author:taoyan date:2022-5-23 for: issues/3676 获取系统用户列表时,使用SQL注入生效
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 多字段排序 判断所传字段是否存在
|
* 多字段排序 判断所传字段是否存在
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private static boolean allColumnExist(String columnStr, Set<String> allFields) {
|
private static boolean allColumnExist(String columnStr, Set<String> allFields) {
|
||||||
@@ -334,6 +359,7 @@ public class QueryGenerator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 高级查询
|
* 高级查询
|
||||||
|
*
|
||||||
* @param queryWrapper 查询对象
|
* @param queryWrapper 查询对象
|
||||||
* @param parameterMap 参数对象
|
* @param parameterMap 参数对象
|
||||||
* @param fieldColumnMap 实体字段和数据库列对应的map
|
* @param fieldColumnMap 实体字段和数据库列对应的map
|
||||||
@@ -433,9 +459,11 @@ public class QueryGenerator {
|
|||||||
}
|
}
|
||||||
//log.info(" superQuery getCustomSqlSegment: "+ queryWrapper.getCustomSqlSegment());
|
//log.info(" superQuery getCustomSqlSegment: "+ queryWrapper.getCustomSqlSegment());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据所传的值 转化成对应的比较方式
|
* 根据所传的值 转化成对应的比较方式
|
||||||
* 支持><= like in !
|
* 支持><= like in !
|
||||||
|
*
|
||||||
* @param value
|
* @param value
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -583,6 +611,7 @@ public class QueryGenerator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据类型转换给定的值
|
* 根据类型转换给定的值
|
||||||
|
*
|
||||||
* @param value
|
* @param value
|
||||||
* @param type
|
* @param type
|
||||||
* @param rule
|
* @param rule
|
||||||
@@ -622,6 +651,7 @@ public class QueryGenerator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取日期类型的值
|
* 获取日期类型的值
|
||||||
|
*
|
||||||
* @param value
|
* @param value
|
||||||
* @param rule
|
* @param rule
|
||||||
* @return
|
* @return
|
||||||
@@ -648,6 +678,7 @@ public class QueryGenerator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据规则走不同的查询
|
* 根据规则走不同的查询
|
||||||
|
*
|
||||||
* @param queryWrapper QueryWrapper
|
* @param queryWrapper QueryWrapper
|
||||||
* @param name 字段名字
|
* @param name 字段名字
|
||||||
* @param rule 查询规则
|
* @param rule 查询规则
|
||||||
@@ -738,8 +769,8 @@ public class QueryGenerator {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @param name
|
* @param name
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -750,9 +781,9 @@ public class QueryGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取请求对应的数据权限规则 TODO 相同列权限多个 有问题
|
* 获取请求对应的数据权限规则 TODO 相同列权限多个 有问题
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static Map<String, SysPermissionDataRuleModel> getRuleMap() {
|
public static Map<String, SysPermissionDataRuleModel> getRuleMap() {
|
||||||
@@ -812,10 +843,10 @@ public class QueryGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param ruleValue:
|
||||||
* @author: scott
|
* @author: scott
|
||||||
* @Description: 去掉值前后单引号
|
* @Description: 去掉值前后单引号
|
||||||
* @date: 2020/3/19 21:26
|
* @date: 2020/3/19 21:26
|
||||||
* @param ruleValue:
|
|
||||||
* @Return: java.lang.String
|
* @Return: java.lang.String
|
||||||
*/
|
*/
|
||||||
public static String trimSingleQuote(String ruleValue) {
|
public static String trimSingleQuote(String ruleValue) {
|
||||||
@@ -865,6 +896,7 @@ public class QueryGenerator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取查询条件
|
* 获取查询条件
|
||||||
|
*
|
||||||
* @param field
|
* @param field
|
||||||
* @param alias
|
* @param alias
|
||||||
* @param value
|
* @param value
|
||||||
@@ -877,6 +909,7 @@ public class QueryGenerator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据权限相关配置生成相关的SQL 语句
|
* 根据权限相关配置生成相关的SQL 语句
|
||||||
|
*
|
||||||
* @param clazz
|
* @param clazz
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -925,6 +958,7 @@ public class QueryGenerator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据权限相关配置 组装mp需要的权限
|
* 根据权限相关配置 组装mp需要的权限
|
||||||
|
*
|
||||||
* @param queryWrapper
|
* @param queryWrapper
|
||||||
* @param clazz
|
* @param clazz
|
||||||
* @return
|
* @return
|
||||||
@@ -956,6 +990,7 @@ public class QueryGenerator {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 转换sql中的系统变量
|
* 转换sql中的系统变量
|
||||||
|
*
|
||||||
* @param sql
|
* @param sql
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,63 +4,114 @@ import org.jeecg.common.util.oConvertUtils;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Query 规则 常量
|
* Query 规则 常量
|
||||||
|
*
|
||||||
* @Author Scott
|
* @Author Scott
|
||||||
* @Date 2019年02月14日
|
* @Date 2019年02月14日
|
||||||
*/
|
*/
|
||||||
public enum QueryRuleEnum {
|
public enum QueryRuleEnum {
|
||||||
|
|
||||||
/**查询规则 大于*/
|
/**
|
||||||
|
* 查询规则 大于
|
||||||
|
*/
|
||||||
GT(">", "gt", "大于"),
|
GT(">", "gt", "大于"),
|
||||||
/**查询规则 大于等于*/
|
/**
|
||||||
|
* 查询规则 大于等于
|
||||||
|
*/
|
||||||
GE(">=", "ge", "大于等于"),
|
GE(">=", "ge", "大于等于"),
|
||||||
/**查询规则 小于*/
|
/**
|
||||||
|
* 查询规则 小于
|
||||||
|
*/
|
||||||
LT("<", "lt", "小于"),
|
LT("<", "lt", "小于"),
|
||||||
/**查询规则 小于等于*/
|
/**
|
||||||
|
* 查询规则 小于等于
|
||||||
|
*/
|
||||||
LE("<=", "le", "小于等于"),
|
LE("<=", "le", "小于等于"),
|
||||||
/**查询规则 等于*/
|
/**
|
||||||
|
* 查询规则 等于
|
||||||
|
*/
|
||||||
EQ("=", "eq", "等于"),
|
EQ("=", "eq", "等于"),
|
||||||
/**查询规则 不等于*/
|
/**
|
||||||
|
* 查询规则 不等于
|
||||||
|
*/
|
||||||
NE("!=", "ne", "不等于"),
|
NE("!=", "ne", "不等于"),
|
||||||
/**查询规则 包含*/
|
/**
|
||||||
|
* 查询规则 包含
|
||||||
|
*/
|
||||||
IN("IN", "in", "包含"),
|
IN("IN", "in", "包含"),
|
||||||
/**查询规则 全模糊*/
|
/**
|
||||||
|
* 查询规则 全模糊
|
||||||
|
*/
|
||||||
LIKE("LIKE", "like", "全模糊"),
|
LIKE("LIKE", "like", "全模糊"),
|
||||||
/**查询规则 不模糊包含*/
|
/**
|
||||||
|
* 查询规则 不模糊包含
|
||||||
|
*/
|
||||||
NOT_LIKE("NOT_LIKE", "not_like", "不模糊包含"),
|
NOT_LIKE("NOT_LIKE", "not_like", "不模糊包含"),
|
||||||
/**查询规则 左模糊*/
|
/**
|
||||||
|
* 查询规则 左模糊
|
||||||
|
*/
|
||||||
LEFT_LIKE("LEFT_LIKE", "left_like", "左模糊"),
|
LEFT_LIKE("LEFT_LIKE", "left_like", "左模糊"),
|
||||||
/**查询规则 右模糊*/
|
/**
|
||||||
|
* 查询规则 右模糊
|
||||||
|
*/
|
||||||
RIGHT_LIKE("RIGHT_LIKE", "right_like", "右模糊"),
|
RIGHT_LIKE("RIGHT_LIKE", "right_like", "右模糊"),
|
||||||
/**查询规则 带加号等于*/
|
/**
|
||||||
|
* 查询规则 带加号等于
|
||||||
|
*/
|
||||||
EQ_WITH_ADD("EQWITHADD", "eq_with_add", "带加号等于"),
|
EQ_WITH_ADD("EQWITHADD", "eq_with_add", "带加号等于"),
|
||||||
/**查询规则 多词模糊匹配(and)*/
|
/**
|
||||||
|
* 查询规则 多词模糊匹配(and)
|
||||||
|
*/
|
||||||
LIKE_WITH_AND("LIKEWITHAND", "like_with_and", "多词模糊匹配————暂时未用上"),
|
LIKE_WITH_AND("LIKEWITHAND", "like_with_and", "多词模糊匹配————暂时未用上"),
|
||||||
/**查询规则 多词模糊匹配(or)*/
|
/**
|
||||||
|
* 查询规则 多词模糊匹配(or)
|
||||||
|
*/
|
||||||
LIKE_WITH_OR("LIKEWITHOR", "like_with_or", "多词模糊匹配(or)"),
|
LIKE_WITH_OR("LIKEWITHOR", "like_with_or", "多词模糊匹配(or)"),
|
||||||
/**查询规则 自定义SQL片段*/
|
/**
|
||||||
|
* 查询规则 自定义SQL片段
|
||||||
|
*/
|
||||||
SQL_RULES("USE_SQL_RULES", "ext", "自定义SQL片段"),
|
SQL_RULES("USE_SQL_RULES", "ext", "自定义SQL片段"),
|
||||||
|
|
||||||
/** 查询工作表 */
|
/**
|
||||||
|
* 查询工作表
|
||||||
|
*/
|
||||||
LINKAGE("LINKAGE", "linkage", "查询工作表"),
|
LINKAGE("LINKAGE", "linkage", "查询工作表"),
|
||||||
|
|
||||||
// ------- 当前表单设计器内专用 -------
|
// ------- 当前表单设计器内专用 -------
|
||||||
/**查询规则 不以…结尾*/
|
/**
|
||||||
|
* 查询规则 不以…结尾
|
||||||
|
*/
|
||||||
NOT_LEFT_LIKE("NOT_LEFT_LIKE", "not_left_like", "不以…结尾"),
|
NOT_LEFT_LIKE("NOT_LEFT_LIKE", "not_left_like", "不以…结尾"),
|
||||||
/**查询规则 不以…开头*/
|
/**
|
||||||
|
* 查询规则 不以…开头
|
||||||
|
*/
|
||||||
NOT_RIGHT_LIKE("NOT_RIGHT_LIKE", "not_right_like", "不以…开头"),
|
NOT_RIGHT_LIKE("NOT_RIGHT_LIKE", "not_right_like", "不以…开头"),
|
||||||
/** 值为空 */
|
/**
|
||||||
|
* 值为空
|
||||||
|
*/
|
||||||
EMPTY("EMPTY", "empty", "值为空"),
|
EMPTY("EMPTY", "empty", "值为空"),
|
||||||
/** 值不为空 */
|
/**
|
||||||
|
* 值不为空
|
||||||
|
*/
|
||||||
NOT_EMPTY("NOT_EMPTY", "not_empty", "值不为空"),
|
NOT_EMPTY("NOT_EMPTY", "not_empty", "值不为空"),
|
||||||
/**查询规则 不包含*/
|
/**
|
||||||
|
* 查询规则 不包含
|
||||||
|
*/
|
||||||
NOT_IN("NOT_IN", "not_in", "不包含"),
|
NOT_IN("NOT_IN", "not_in", "不包含"),
|
||||||
/**查询规则 多词匹配*/
|
/**
|
||||||
|
* 查询规则 多词匹配
|
||||||
|
*/
|
||||||
ELE_MATCH("ELE_MATCH", "elemMatch", "多词匹配"),
|
ELE_MATCH("ELE_MATCH", "elemMatch", "多词匹配"),
|
||||||
/**查询规则 范围查询*/
|
/**
|
||||||
|
* 查询规则 范围查询
|
||||||
|
*/
|
||||||
RANGE("RANGE", "range", "范围查询"),
|
RANGE("RANGE", "range", "范围查询"),
|
||||||
/**查询规则 不在范围内查询*/
|
/**
|
||||||
|
* 查询规则 不在范围内查询
|
||||||
|
*/
|
||||||
NOT_RANGE("NOT_RANGE", "not_range", "不在范围查询"),
|
NOT_RANGE("NOT_RANGE", "not_range", "不在范围查询"),
|
||||||
/** 自定义mongodb查询语句 */
|
/**
|
||||||
|
* 自定义mongodb查询语句
|
||||||
|
*/
|
||||||
CUSTOM_MONGODB("CUSTOM_MONGODB", "custom_mongodb", "自定义mongodb查询语句");
|
CUSTOM_MONGODB("CUSTOM_MONGODB", "custom_mongodb", "自定义mongodb查询语句");
|
||||||
// ------- 当前表单设计器内专用 -------
|
// ------- 当前表单设计器内专用 -------
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package org.jeecg.common.system.util;
|
package org.jeecg.common.system.util;
|
||||||
|
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import org.jeecg.common.system.vo.SysPermissionDataRuleModel;
|
import org.jeecg.common.system.vo.SysPermissionDataRuleModel;
|
||||||
import org.jeecg.common.system.vo.SysUserCacheInfo;
|
import org.jeecg.common.system.vo.SysUserCacheInfo;
|
||||||
import org.jeecg.common.util.SpringContextUtils;
|
import org.jeecg.common.util.SpringContextUtils;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -14,7 +14,6 @@ import java.util.List;
|
|||||||
* @Description: 数据权限查询规则容器工具类
|
* @Description: 数据权限查询规则容器工具类
|
||||||
* @Author: 张代浩
|
* @Author: 张代浩
|
||||||
* @Date: 2012-12-15 下午11:27:39
|
* @Date: 2012-12-15 下午11:27:39
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class JeecgDataAutorUtils {
|
public class JeecgDataAutorUtils {
|
||||||
|
|
||||||
@@ -80,6 +79,7 @@ public class JeecgDataAutorUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将用户信息存到request
|
* 将用户信息存到request
|
||||||
|
*
|
||||||
* @param request
|
* @param request
|
||||||
* @param userinfo
|
* @param userinfo
|
||||||
*/
|
*/
|
||||||
@@ -89,6 +89,7 @@ public class JeecgDataAutorUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将用户信息存到request
|
* 将用户信息存到request
|
||||||
|
*
|
||||||
* @param userinfo
|
* @param userinfo
|
||||||
*/
|
*/
|
||||||
public static synchronized void installUserInfo(SysUserCacheInfo userinfo) {
|
public static synchronized void installUserInfo(SysUserCacheInfo userinfo) {
|
||||||
@@ -97,6 +98,7 @@ public class JeecgDataAutorUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 从request获取用户信息
|
* 从request获取用户信息
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static synchronized SysUserCacheInfo loadUserInfo() {
|
public static synchronized SysUserCacheInfo loadUserInfo() {
|
||||||
|
|||||||
@@ -7,15 +7,10 @@ import com.auth0.jwt.exceptions.JWTDecodeException;
|
|||||||
import com.auth0.jwt.interfaces.DecodedJWT;
|
import com.auth0.jwt.interfaces.DecodedJWT;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.util.Date;
|
|
||||||
import jakarta.servlet.ServletResponse;
|
import jakarta.servlet.ServletResponse;
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.servlet.http.HttpSession;
|
import jakarta.servlet.http.HttpSession;
|
||||||
|
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.shiro.SecurityUtils;
|
import org.apache.shiro.SecurityUtils;
|
||||||
import org.jeecg.common.api.vo.Result;
|
import org.jeecg.common.api.vo.Result;
|
||||||
@@ -30,6 +25,10 @@ import org.jeecg.common.util.DateUtils;
|
|||||||
import org.jeecg.common.util.SpringContextUtils;
|
import org.jeecg.common.util.SpringContextUtils;
|
||||||
import org.jeecg.common.util.oConvertUtils;
|
import org.jeecg.common.util.oConvertUtils;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author Scott
|
* @Author Scott
|
||||||
* @Date 2018-07-12 14:23
|
* @Date 2018-07-12 14:23
|
||||||
@@ -38,12 +37,13 @@ import org.jeecg.common.util.oConvertUtils;
|
|||||||
@Slf4j
|
@Slf4j
|
||||||
public class JwtUtil {
|
public class JwtUtil {
|
||||||
|
|
||||||
/**Token有效期为7天(Token在reids中缓存时间为两倍)*/
|
/**
|
||||||
|
* Token有效期为7天(Token在reids中缓存时间为两倍)
|
||||||
|
*/
|
||||||
public static final long EXPIRE_TIME = (7 * 12) * 60 * 60 * 1000;
|
public static final long EXPIRE_TIME = (7 * 12) * 60 * 60 * 1000;
|
||||||
static final String WELL_NUMBER = SymbolConstant.WELL_NUMBER + SymbolConstant.LEFT_CURLY_BRACKET;
|
static final String WELL_NUMBER = SymbolConstant.WELL_NUMBER + SymbolConstant.LEFT_CURLY_BRACKET;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @param response
|
* @param response
|
||||||
* @param code
|
* @param code
|
||||||
* @param errorMsg
|
* @param errorMsg
|
||||||
@@ -134,6 +134,7 @@ public class JwtUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 从session中获取变量
|
* 从session中获取变量
|
||||||
|
*
|
||||||
* @param key
|
* @param key
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -155,12 +156,15 @@ public class JwtUtil {
|
|||||||
returnValue = (String) session.getAttribute(key);
|
returnValue = (String) session.getAttribute(key);
|
||||||
}
|
}
|
||||||
//结果加上${} 后面的值
|
//结果加上${} 后面的值
|
||||||
if(returnValue!=null){returnValue = returnValue + moshi;}
|
if (returnValue != null) {
|
||||||
|
returnValue = returnValue + moshi;
|
||||||
|
}
|
||||||
return returnValue;
|
return returnValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 从当前用户中获取变量
|
* 从当前用户中获取变量
|
||||||
|
*
|
||||||
* @param key
|
* @param key
|
||||||
* @param user
|
* @param user
|
||||||
* @return
|
* @return
|
||||||
@@ -290,7 +294,9 @@ public class JwtUtil {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
//update-end-author:taoyan date:20210330 for:多租户ID作为系统变量
|
//update-end-author:taoyan date:20210330 for:多租户ID作为系统变量
|
||||||
if(returnValue!=null){returnValue = returnValue + moshi;}
|
if (returnValue != null) {
|
||||||
|
returnValue = returnValue + moshi;
|
||||||
|
}
|
||||||
return returnValue;
|
return returnValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import java.util.Map;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 资源加载工具类
|
* 资源加载工具类
|
||||||
|
*
|
||||||
* @Author taoYan
|
* @Author taoYan
|
||||||
* @Date 2022/7/8 10:40
|
* @Date 2022/7/8 10:40
|
||||||
**/
|
**/
|
||||||
@@ -56,6 +57,7 @@ public class ResourceUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取枚举类对应的字典数据 SysDictServiceImpl#queryAllDictItems()
|
* 获取枚举类对应的字典数据 SysDictServiceImpl#queryAllDictItems()
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static Map<String, List<DictModel>> getEnumDictData() {
|
public static Map<String, List<DictModel>> getEnumDictData() {
|
||||||
@@ -90,6 +92,7 @@ public class ResourceUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 用于后端字典翻译 SysDictServiceImpl#queryManyDictByKeys(java.util.List, java.util.List)
|
* 用于后端字典翻译 SysDictServiceImpl#queryManyDictByKeys(java.util.List, java.util.List)
|
||||||
|
*
|
||||||
* @param dictCodeList
|
* @param dictCodeList
|
||||||
* @param keys
|
* @param keys
|
||||||
* @return
|
* @return
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ import org.jeecg.common.system.query.QueryGenerator;
|
|||||||
import org.jeecg.common.system.query.QueryRuleEnum;
|
import org.jeecg.common.system.query.QueryRuleEnum;
|
||||||
import org.jeecg.common.util.CommonUtils;
|
import org.jeecg.common.util.CommonUtils;
|
||||||
import org.jeecg.common.util.oConvertUtils;
|
import org.jeecg.common.util.oConvertUtils;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@@ -20,6 +21,7 @@ public class SqlConcatUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取单个查询条件的值
|
* 获取单个查询条件的值
|
||||||
|
*
|
||||||
* @param rule
|
* @param rule
|
||||||
* @param field
|
* @param field
|
||||||
* @param value
|
* @param value
|
||||||
@@ -32,6 +34,7 @@ public class SqlConcatUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 报表获取查询条件 支持多数据源
|
* 报表获取查询条件 支持多数据源
|
||||||
|
*
|
||||||
* @param field
|
* @param field
|
||||||
* @param alias
|
* @param alias
|
||||||
* @param value
|
* @param value
|
||||||
@@ -50,6 +53,7 @@ public class SqlConcatUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取单个查询条件的值
|
* 获取单个查询条件的值
|
||||||
|
*
|
||||||
* @param rule
|
* @param rule
|
||||||
* @param field
|
* @param field
|
||||||
* @param value
|
* @param value
|
||||||
@@ -102,6 +106,7 @@ public class SqlConcatUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取查询条件的值
|
* 获取查询条件的值
|
||||||
|
*
|
||||||
* @param value
|
* @param value
|
||||||
* @param isString
|
* @param isString
|
||||||
* @param dataBaseType
|
* @param dataBaseType
|
||||||
@@ -165,6 +170,7 @@ public class SqlConcatUtil {
|
|||||||
/**
|
/**
|
||||||
* 先根据值判断 走左模糊还是右模糊
|
* 先根据值判断 走左模糊还是右模糊
|
||||||
* 最后如果值不带任何标识(*或者%),则再根据ruleEnum判断
|
* 最后如果值不带任何标识(*或者%),则再根据ruleEnum判断
|
||||||
|
*
|
||||||
* @param value
|
* @param value
|
||||||
* @param ruleEnum
|
* @param ruleEnum
|
||||||
* @return
|
* @return
|
||||||
|
|||||||
@@ -18,23 +18,35 @@ import java.io.Serializable;
|
|||||||
public class ComboModel implements Serializable {
|
public class ComboModel implements Serializable {
|
||||||
private String id;
|
private String id;
|
||||||
private String title;
|
private String title;
|
||||||
/**文档管理 表单table默认选中*/
|
/**
|
||||||
|
* 文档管理 表单table默认选中
|
||||||
|
*/
|
||||||
private boolean checked;
|
private boolean checked;
|
||||||
/**文档管理 表单table 用户账号*/
|
/**
|
||||||
|
* 文档管理 表单table 用户账号
|
||||||
|
*/
|
||||||
private String username;
|
private String username;
|
||||||
/**文档管理 表单table 用户邮箱*/
|
/**
|
||||||
|
* 文档管理 表单table 用户邮箱
|
||||||
|
*/
|
||||||
private String email;
|
private String email;
|
||||||
/**文档管理 表单table 角色编码*/
|
/**
|
||||||
|
* 文档管理 表单table 角色编码
|
||||||
|
*/
|
||||||
private String roleCode;
|
private String roleCode;
|
||||||
|
|
||||||
public ComboModel() {
|
public ComboModel() {
|
||||||
|
|
||||||
};
|
}
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
public ComboModel(String id, String title, boolean checked, String username) {
|
public ComboModel(String id, String title, boolean checked, String username) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.title = title;
|
this.title = title;
|
||||||
this.checked = false;
|
this.checked = false;
|
||||||
this.username = username;
|
this.username = username;
|
||||||
};
|
}
|
||||||
|
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
package org.jeecg.common.system.vo;
|
package org.jeecg.common.system.vo;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
|
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 字典类
|
* @Description: 字典类
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
@@ -49,11 +48,13 @@ public class DictModel implements Serializable{
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 特殊用途: JgEditableTable
|
* 特殊用途: JgEditableTable
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return this.text;
|
return this.text;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 特殊用途: vue3 Select组件
|
* 特殊用途: vue3 Select组件
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询多个字典时用到
|
* 查询多个字典时用到
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import lombok.Data;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 字典查询参数实体
|
* 字典查询参数实体
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
|
|||||||
@@ -131,11 +131,15 @@ public class LoginUser {
|
|||||||
@SensitiveField
|
@SensitiveField
|
||||||
private String telephone;
|
private String telephone;
|
||||||
|
|
||||||
/** 多租户ids临时用,不持久化数据库(数据库字段不存在) */
|
/**
|
||||||
|
* 多租户ids临时用,不持久化数据库(数据库字段不存在)
|
||||||
|
*/
|
||||||
@SensitiveField
|
@SensitiveField
|
||||||
private String relTenantIds;
|
private String relTenantIds;
|
||||||
|
|
||||||
/**设备id uniapp推送用*/
|
/**
|
||||||
|
* 设备id uniapp推送用
|
||||||
|
*/
|
||||||
private String clientId;
|
private String clientId;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,5 @@
|
|||||||
package org.jeecg.common.system.vo;
|
package org.jeecg.common.system.vo;
|
||||||
|
|
||||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author qinfeng
|
* @Author qinfeng
|
||||||
* @Date 2020/2/19 12:01
|
* @Date 2020/2/19 12:01
|
||||||
@@ -9,13 +7,21 @@ import org.jeecgframework.poi.excel.annotation.Excel;
|
|||||||
* @Version 1.0
|
* @Version 1.0
|
||||||
*/
|
*/
|
||||||
public class SysCategoryModel {
|
public class SysCategoryModel {
|
||||||
/**主键*/
|
/**
|
||||||
|
* 主键
|
||||||
|
*/
|
||||||
private java.lang.String id;
|
private java.lang.String id;
|
||||||
/**父级节点*/
|
/**
|
||||||
|
* 父级节点
|
||||||
|
*/
|
||||||
private java.lang.String pid;
|
private java.lang.String pid;
|
||||||
/**类型名称*/
|
/**
|
||||||
|
* 类型名称
|
||||||
|
*/
|
||||||
private java.lang.String name;
|
private java.lang.String name;
|
||||||
/**类型编码*/
|
/**
|
||||||
|
* 类型编码
|
||||||
|
*/
|
||||||
private java.lang.String code;
|
private java.lang.String code;
|
||||||
|
|
||||||
public String getId() {
|
public String getId() {
|
||||||
|
|||||||
@@ -2,36 +2,65 @@ package org.jeecg.common.system.vo;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门机构model
|
* 部门机构model
|
||||||
|
*
|
||||||
* @author: lvdandan
|
* @author: lvdandan
|
||||||
*/
|
*/
|
||||||
public class SysDepartModel {
|
public class SysDepartModel {
|
||||||
/**ID*/
|
/**
|
||||||
|
* ID
|
||||||
|
*/
|
||||||
private String id;
|
private String id;
|
||||||
/**父机构ID*/
|
/**
|
||||||
|
* 父机构ID
|
||||||
|
*/
|
||||||
private String parentId;
|
private String parentId;
|
||||||
/**机构/部门名称*/
|
/**
|
||||||
|
* 机构/部门名称
|
||||||
|
*/
|
||||||
private String departName;
|
private String departName;
|
||||||
/**英文名*/
|
/**
|
||||||
|
* 英文名
|
||||||
|
*/
|
||||||
private String departNameEn;
|
private String departNameEn;
|
||||||
/**缩写*/
|
/**
|
||||||
|
* 缩写
|
||||||
|
*/
|
||||||
private String departNameAbbr;
|
private String departNameAbbr;
|
||||||
/**排序*/
|
/**
|
||||||
|
* 排序
|
||||||
|
*/
|
||||||
private Integer departOrder;
|
private Integer departOrder;
|
||||||
/**描述*/
|
/**
|
||||||
|
* 描述
|
||||||
|
*/
|
||||||
private String description;
|
private String description;
|
||||||
/**机构类别 1组织机构,2岗位*/
|
/**
|
||||||
|
* 机构类别 1组织机构,2岗位
|
||||||
|
*/
|
||||||
private String orgCategory;
|
private String orgCategory;
|
||||||
/**机构类型*/
|
/**
|
||||||
|
* 机构类型
|
||||||
|
*/
|
||||||
private String orgType;
|
private String orgType;
|
||||||
/**机构编码*/
|
/**
|
||||||
|
* 机构编码
|
||||||
|
*/
|
||||||
private String orgCode;
|
private String orgCode;
|
||||||
/**手机号*/
|
/**
|
||||||
|
* 手机号
|
||||||
|
*/
|
||||||
private String mobile;
|
private String mobile;
|
||||||
/**传真*/
|
/**
|
||||||
|
* 传真
|
||||||
|
*/
|
||||||
private String fax;
|
private String fax;
|
||||||
/**地址*/
|
/**
|
||||||
|
* 地址
|
||||||
|
*/
|
||||||
private String address;
|
private String address;
|
||||||
/**备注*/
|
/**
|
||||||
|
* 备注
|
||||||
|
*/
|
||||||
private String memo;
|
private String memo;
|
||||||
|
|
||||||
public String getId() {
|
public String getId() {
|
||||||
|
|||||||
@@ -7,19 +7,33 @@ package org.jeecg.common.system.vo;
|
|||||||
* @date: 2022年08月11日 9:48
|
* @date: 2022年08月11日 9:48
|
||||||
*/
|
*/
|
||||||
public class SysFilesModel {
|
public class SysFilesModel {
|
||||||
/**主键id*/
|
/**
|
||||||
|
* 主键id
|
||||||
|
*/
|
||||||
private String id;
|
private String id;
|
||||||
/**文件名称*/
|
/**
|
||||||
|
* 文件名称
|
||||||
|
*/
|
||||||
private String fileName;
|
private String fileName;
|
||||||
/**文件地址*/
|
/**
|
||||||
|
* 文件地址
|
||||||
|
*/
|
||||||
private String url;
|
private String url;
|
||||||
/**文档类型(folder:文件夹 excel:excel doc:word pp:ppt image:图片 archive:其他文档 video:视频)*/
|
/**
|
||||||
|
* 文档类型(folder:文件夹 excel:excel doc:word pp:ppt image:图片 archive:其他文档 video:视频)
|
||||||
|
*/
|
||||||
private String fileType;
|
private String fileType;
|
||||||
/**文件上传类型(temp/本地上传(临时文件) manage/知识库)*/
|
/**
|
||||||
|
* 文件上传类型(temp/本地上传(临时文件) manage/知识库)
|
||||||
|
*/
|
||||||
private String storeType;
|
private String storeType;
|
||||||
/**文件大小(kb)*/
|
/**
|
||||||
|
* 文件大小(kb)
|
||||||
|
*/
|
||||||
private Double fileSize;
|
private Double fileSize;
|
||||||
/**租户id*/
|
/**
|
||||||
|
* 租户id
|
||||||
|
*/
|
||||||
private String tenantId;
|
private String tenantId;
|
||||||
|
|
||||||
public String getId() {
|
public String getId() {
|
||||||
|
|||||||
@@ -1,12 +1,5 @@
|
|||||||
package org.jeecg.common.system.vo;
|
package org.jeecg.common.system.vo;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import lombok.experimental.Accessors;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
package org.jeecg.common.system.vo;
|
package org.jeecg.common.system.vo;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.jeecg.common.util.DateUtils;
|
import org.jeecg.common.util.DateUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 用户缓存信息
|
* @Description: 用户缓存信息
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
|
|||||||
@@ -1,13 +1,9 @@
|
|||||||
package org.jeecg.common.system.vo;
|
package org.jeecg.common.system.vo;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
import org.jeecg.common.desensitization.annotation.SensitiveField;
|
import org.jeecg.common.desensitization.annotation.SensitiveField;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
|
||||||
|
|
||||||
import java.util.Date;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* <p>
|
* <p>
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
package org.jeecg.common.util;
|
package org.jeecg.common.util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @Author 张代浩
|
* @Author 张代浩
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public enum BrowserType {
|
public enum BrowserType {
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,21 +1,20 @@
|
|||||||
package org.jeecg.common.util;
|
package org.jeecg.common.util;
|
||||||
|
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @Author 张代浩
|
* @Author 张代浩
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class BrowserUtils {
|
public class BrowserUtils {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断是否是IE
|
* 判断是否是IE
|
||||||
|
*
|
||||||
* @param request
|
* @param request
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -178,8 +177,7 @@ public class BrowserUtils {
|
|||||||
private final static String EN_US = "en";
|
private final static String EN_US = "en";
|
||||||
|
|
||||||
|
|
||||||
static
|
static {
|
||||||
{
|
|
||||||
langMap.put(ZH, ZH_CN);
|
langMap.put(ZH, ZH_CN);
|
||||||
langMap.put(EN, EN_US);
|
langMap.put(EN, EN_US);
|
||||||
}
|
}
|
||||||
@@ -189,19 +187,22 @@ public class BrowserUtils {
|
|||||||
String browserLang = request.getLocale().getLanguage();
|
String browserLang = request.getLocale().getLanguage();
|
||||||
String browserLangCode = (String) langMap.get(browserLang);
|
String browserLangCode = (String) langMap.get(browserLang);
|
||||||
|
|
||||||
if(browserLangCode == null)
|
if (browserLangCode == null) {
|
||||||
{
|
|
||||||
browserLangCode = EN_US;
|
browserLangCode = EN_US;
|
||||||
}
|
}
|
||||||
return browserLangCode;
|
return browserLangCode;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 判断请求是否来自电脑端 */
|
/**
|
||||||
|
* 判断请求是否来自电脑端
|
||||||
|
*/
|
||||||
public static boolean isDesktop(HttpServletRequest request) {
|
public static boolean isDesktop(HttpServletRequest request) {
|
||||||
return !isMobile(request);
|
return !isMobile(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 判断请求是否来自移动端 */
|
/**
|
||||||
|
* 判断请求是否来自移动端
|
||||||
|
*/
|
||||||
public static boolean isMobile(HttpServletRequest request) {
|
public static boolean isMobile(HttpServletRequest request) {
|
||||||
String ua = request.getHeader("User-Agent").toLowerCase();
|
String ua = request.getHeader("User-Agent").toLowerCase();
|
||||||
String type = "(phone|pad|pod|iphone|ipod|ios|ipad|android|mobile|blackberry|iemobile|mqqbrowser|juc|fennec|wosbrowser|browserng|webos|symbian|windows phone)";
|
String type = "(phone|pad|pod|iphone|ipod|ios|ipad|android|mobile|blackberry|iemobile|mqqbrowser|juc|fennec|wosbrowser|browserng|webos|symbian|windows phone)";
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import com.baomidou.dynamic.datasource.creator.DataSourceProperty;
|
|||||||
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
|
import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties;
|
||||||
import com.baomidou.mybatisplus.annotation.DbType;
|
import com.baomidou.mybatisplus.annotation.DbType;
|
||||||
import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils;
|
import com.baomidou.mybatisplus.extension.toolkit.JdbcUtils;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.constant.CommonConstant;
|
||||||
@@ -19,7 +20,6 @@ import org.springframework.jdbc.datasource.DriverManagerDataSource;
|
|||||||
import org.springframework.util.FileCopyUtils;
|
import org.springframework.util.FileCopyUtils;
|
||||||
import org.springframework.web.multipart.MultipartFile;
|
import org.springframework.web.multipart.MultipartFile;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
import java.io.ByteArrayInputStream;
|
import java.io.ByteArrayInputStream;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
@@ -83,6 +83,7 @@ public class CommonUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断文件名是否带盘符,重新处理
|
* 判断文件名是否带盘符,重新处理
|
||||||
|
*
|
||||||
* @param fileName
|
* @param fileName
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -111,6 +112,7 @@ public class CommonUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* java 判断字符串里是否包含中文字符
|
* java 判断字符串里是否包含中文字符
|
||||||
|
*
|
||||||
* @param str
|
* @param str
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -128,6 +130,7 @@ public class CommonUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 统一全局上传
|
* 统一全局上传
|
||||||
|
*
|
||||||
* @Return: java.lang.String
|
* @Return: java.lang.String
|
||||||
*/
|
*/
|
||||||
public static String upload(MultipartFile file, String bizPath, String uploadType) {
|
public static String upload(MultipartFile file, String bizPath, String uploadType) {
|
||||||
@@ -144,8 +147,10 @@ public class CommonUtils {
|
|||||||
}
|
}
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 本地文件上传
|
* 本地文件上传
|
||||||
|
*
|
||||||
* @param mf 文件
|
* @param mf 文件
|
||||||
* @param bizPath 自定义路径
|
* @param bizPath 自定义路径
|
||||||
* @return
|
* @return
|
||||||
@@ -192,6 +197,7 @@ public class CommonUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 统一全局上传 带桶
|
* 统一全局上传 带桶
|
||||||
|
*
|
||||||
* @Return: java.lang.String
|
* @Return: java.lang.String
|
||||||
*/
|
*/
|
||||||
public static String upload(MultipartFile file, String bizPath, String uploadType, String customBucket) {
|
public static String upload(MultipartFile file, String bizPath, String uploadType, String customBucket) {
|
||||||
@@ -208,12 +214,15 @@ public class CommonUtils {
|
|||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 当前系统数据库类型 */
|
/**
|
||||||
|
* 当前系统数据库类型
|
||||||
|
*/
|
||||||
private static String DB_TYPE = "";
|
private static String DB_TYPE = "";
|
||||||
private static DbType dbTypeEnum = null;
|
private static DbType dbTypeEnum = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 全局获取平台数据库类型(作废了)
|
* 全局获取平台数据库类型(作废了)
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@@ -233,6 +242,7 @@ public class CommonUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 全局获取平台数据库类型(对应mybaisPlus枚举)
|
* 全局获取平台数据库类型(对应mybaisPlus枚举)
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static DbType getDatabaseTypeEnum() {
|
public static DbType getDatabaseTypeEnum() {
|
||||||
@@ -251,6 +261,7 @@ public class CommonUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据数据源key获取DataSourceProperty
|
* 根据数据源key获取DataSourceProperty
|
||||||
|
*
|
||||||
* @param sourceKey
|
* @param sourceKey
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -263,6 +274,7 @@ public class CommonUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据sourceKey 获取数据源连接
|
* 根据sourceKey 获取数据源连接
|
||||||
|
*
|
||||||
* @param sourceKey
|
* @param sourceKey
|
||||||
* @return
|
* @return
|
||||||
* @throws SQLException
|
* @throws SQLException
|
||||||
@@ -287,6 +299,7 @@ public class CommonUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取数据库类型
|
* 获取数据库类型
|
||||||
|
*
|
||||||
* @param dataSource
|
* @param dataSource
|
||||||
* @return
|
* @return
|
||||||
* @throws SQLException
|
* @throws SQLException
|
||||||
@@ -321,6 +334,7 @@ public class CommonUtils {
|
|||||||
return DB_TYPE;
|
return DB_TYPE;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取服务器地址
|
* 获取服务器地址
|
||||||
*
|
*
|
||||||
@@ -402,6 +416,7 @@ public class CommonUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将list集合以分割符的方式进行分割
|
* 将list集合以分割符的方式进行分割
|
||||||
|
*
|
||||||
* @param list String类型的集合文本
|
* @param list String类型的集合文本
|
||||||
* @param separator 分隔符
|
* @param separator 分隔符
|
||||||
* @return
|
* @return
|
||||||
@@ -454,6 +469,7 @@ public class CommonUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断两个数组是否存在交集
|
* 判断两个数组是否存在交集
|
||||||
|
*
|
||||||
* @param set1
|
* @param set1
|
||||||
* @param arr2
|
* @param arr2
|
||||||
* @return
|
* @return
|
||||||
|
|||||||
@@ -79,6 +79,7 @@ public class DateUtils extends PropertyEditorSupport {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 指定模式的时间格式
|
* 指定模式的时间格式
|
||||||
|
*
|
||||||
* @param pattern
|
* @param pattern
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -689,6 +690,7 @@ public class DateUtils extends PropertyEditorSupport {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将字符串转成时间
|
* 将字符串转成时间
|
||||||
|
*
|
||||||
* @param str
|
* @param str
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -20,21 +20,28 @@ import org.slf4j.LoggerFactory;
|
|||||||
* 工程依赖了2个jar包(存放在工程的libs目录下)
|
* 工程依赖了2个jar包(存放在工程的libs目录下)
|
||||||
* 1:aliyun-java-sdk-core.jar
|
* 1:aliyun-java-sdk-core.jar
|
||||||
* 2:aliyun-java-sdk-dysmsapi.jar
|
* 2:aliyun-java-sdk-dysmsapi.jar
|
||||||
*
|
* <p>
|
||||||
* 备注:Demo工程编码采用UTF-8
|
* 备注:Demo工程编码采用UTF-8
|
||||||
* 国际短信发送请勿参照此DEMO
|
* 国际短信发送请勿参照此DEMO
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
public class DySmsHelper {
|
public class DySmsHelper {
|
||||||
|
|
||||||
private final static Logger logger = LoggerFactory.getLogger(DySmsHelper.class);
|
private final static Logger logger = LoggerFactory.getLogger(DySmsHelper.class);
|
||||||
|
|
||||||
/**产品名称:云通信短信API产品,开发者无需替换*/
|
/**
|
||||||
|
* 产品名称:云通信短信API产品,开发者无需替换
|
||||||
|
*/
|
||||||
static final String PRODUCT = "Dysmsapi";
|
static final String PRODUCT = "Dysmsapi";
|
||||||
/**产品域名,开发者无需替换*/
|
/**
|
||||||
|
* 产品域名,开发者无需替换
|
||||||
|
*/
|
||||||
static final String DOMAIN = "dysmsapi.aliyuncs.com";
|
static final String DOMAIN = "dysmsapi.aliyuncs.com";
|
||||||
|
|
||||||
/**TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)*/
|
/**
|
||||||
|
* TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)
|
||||||
|
*/
|
||||||
static String accessKeyId;
|
static String accessKeyId;
|
||||||
static String accessKeySecret;
|
static String accessKeySecret;
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import java.util.concurrent.ConcurrentHashMap;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 防止刷短信接口(只针对绑定手机号模板:SMS_175430166)
|
* 防止刷短信接口(只针对绑定手机号模板:SMS_175430166)
|
||||||
*
|
* <p>
|
||||||
* 1、同一IP,1分钟内发短信不允许超过5次(每一分钟重置每个IP请求次数)
|
* 1、同一IP,1分钟内发短信不允许超过5次(每一分钟重置每个IP请求次数)
|
||||||
* 2、同一IP,1分钟内发短信超过20次,进入黑名单,不让使用短信接口
|
* 2、同一IP,1分钟内发短信超过20次,进入黑名单,不让使用短信接口
|
||||||
*
|
* <p>
|
||||||
* 3、短信接口加签和时间戳
|
* 3、短信接口加签和时间戳
|
||||||
* 涉及接口:
|
* 涉及接口:
|
||||||
* /sys/sms
|
* /sys/sms
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import org.springframework.web.util.HtmlUtils;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* HTML 工具类
|
* HTML 工具类
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
* @date: 2022/3/30 14:43
|
* @date: 2022/3/30 14:43
|
||||||
*/
|
*/
|
||||||
@@ -32,6 +33,7 @@ public class HTMLUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将Markdown解析成Html
|
* 将Markdown解析成Html
|
||||||
|
*
|
||||||
* @param markdownContent
|
* @param markdownContent
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import java.util.List;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 导出返回信息
|
* 导出返回信息
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package org.jeecg.common.util;
|
package org.jeecg.common.util;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.constant.CommonConstant;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -24,7 +23,7 @@ public class IpUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取IP地址
|
* 获取IP地址
|
||||||
*
|
* <p>
|
||||||
* 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址
|
* 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址
|
||||||
* 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
|
* 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
|
||||||
*/
|
*/
|
||||||
@@ -72,6 +71,7 @@ public class IpUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断是否是IP格式
|
* 判断是否是IP格式
|
||||||
|
*
|
||||||
* @param ipAddress
|
* @param ipAddress
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -84,6 +84,7 @@ public class IpUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取服务器上的ip
|
* 获取服务器上的ip
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static String getServerIp() {
|
public static String getServerIp() {
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ public class MyClassLoader extends ClassLoader {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得类的全名,包括包名
|
* 获得类的全名,包括包名
|
||||||
|
*
|
||||||
* @param object
|
* @param object
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package org.jeecg.common.util;
|
package org.jeecg.common.util;
|
||||||
|
|
||||||
import java.security.Key;
|
|
||||||
import java.security.SecureRandom;
|
|
||||||
import javax.crypto.Cipher;
|
import javax.crypto.Cipher;
|
||||||
import javax.crypto.SecretKey;
|
import javax.crypto.SecretKey;
|
||||||
import javax.crypto.SecretKeyFactory;
|
import javax.crypto.SecretKeyFactory;
|
||||||
import javax.crypto.spec.PBEKeySpec;
|
import javax.crypto.spec.PBEKeySpec;
|
||||||
import javax.crypto.spec.PBEParameterSpec;
|
import javax.crypto.spec.PBEParameterSpec;
|
||||||
|
import java.security.Key;
|
||||||
|
import java.security.SecureRandom;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Description: 密码工具类
|
* @Description: 密码工具类
|
||||||
@@ -40,7 +40,7 @@ public class PasswordUtil {
|
|||||||
* 获取加密算法中使用的盐值,解密中使用的盐值必须与加密中使用的相同才能完成操作. 盐长度必须为8字节
|
* 获取加密算法中使用的盐值,解密中使用的盐值必须与加密中使用的相同才能完成操作. 盐长度必须为8字节
|
||||||
*
|
*
|
||||||
* @return byte[] 盐值
|
* @return byte[] 盐值
|
||||||
* */
|
*/
|
||||||
public static byte[] getSalt() throws Exception {
|
public static byte[] getSalt() throws Exception {
|
||||||
// 实例化安全随机数
|
// 实例化安全随机数
|
||||||
SecureRandom random = new SecureRandom();
|
SecureRandom random = new SecureRandom();
|
||||||
@@ -56,10 +56,9 @@ public class PasswordUtil {
|
|||||||
/**
|
/**
|
||||||
* 根据PBE密码生成一把密钥
|
* 根据PBE密码生成一把密钥
|
||||||
*
|
*
|
||||||
* @param password
|
* @param password 生成密钥时所使用的密码
|
||||||
* 生成密钥时所使用的密码
|
|
||||||
* @return Key PBE算法密钥
|
* @return Key PBE算法密钥
|
||||||
* */
|
*/
|
||||||
private static Key getPbeKey(String password) {
|
private static Key getPbeKey(String password) {
|
||||||
// 实例化使用的算法
|
// 实例化使用的算法
|
||||||
SecretKeyFactory keyFactory;
|
SecretKeyFactory keyFactory;
|
||||||
@@ -81,12 +80,9 @@ public class PasswordUtil {
|
|||||||
/**
|
/**
|
||||||
* 加密明文字符串
|
* 加密明文字符串
|
||||||
*
|
*
|
||||||
* @param plaintext
|
* @param plaintext 待加密的明文字符串
|
||||||
* 待加密的明文字符串
|
* @param password 生成密钥时所使用的密码
|
||||||
* @param password
|
* @param salt 盐值
|
||||||
* 生成密钥时所使用的密码
|
|
||||||
* @param salt
|
|
||||||
* 盐值
|
|
||||||
* @return 加密后的密文字符串
|
* @return 加密后的密文字符串
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@@ -110,12 +106,9 @@ public class PasswordUtil {
|
|||||||
/**
|
/**
|
||||||
* 解密密文字符串
|
* 解密密文字符串
|
||||||
*
|
*
|
||||||
* @param ciphertext
|
* @param ciphertext 待解密的密文字符串
|
||||||
* 待解密的密文字符串
|
* @param password 生成密钥时所使用的密码(如需解密,该参数需要与加密时使用的一致)
|
||||||
* @param password
|
* @param salt 盐值(如需解密,该参数需要与加密时使用的一致)
|
||||||
* 生成密钥时所使用的密码(如需解密,该参数需要与加密时使用的一致)
|
|
||||||
* @param salt
|
|
||||||
* 盐值(如需解密,该参数需要与加密时使用的一致)
|
|
||||||
* @return 解密后的明文字符串
|
* @return 解密后的明文字符串
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
*/
|
*/
|
||||||
@@ -130,9 +123,7 @@ public class PasswordUtil {
|
|||||||
cipher.init(Cipher.DECRYPT_MODE, key, parameterSpec);
|
cipher.init(Cipher.DECRYPT_MODE, key, parameterSpec);
|
||||||
|
|
||||||
passDec = cipher.doFinal(hexStringToBytes(ciphertext));
|
passDec = cipher.doFinal(hexStringToBytes(ciphertext));
|
||||||
}
|
} catch (Exception e) {
|
||||||
|
|
||||||
catch (Exception e) {
|
|
||||||
// TODO: handle exception
|
// TODO: handle exception
|
||||||
}
|
}
|
||||||
return new String(passDec);
|
return new String(passDec);
|
||||||
@@ -141,8 +132,7 @@ public class PasswordUtil {
|
|||||||
/**
|
/**
|
||||||
* 将字节数组转换为十六进制字符串
|
* 将字节数组转换为十六进制字符串
|
||||||
*
|
*
|
||||||
* @param src
|
* @param src 字节数组
|
||||||
* 字节数组
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static String bytesToHexString(byte[] src) {
|
public static String bytesToHexString(byte[] src) {
|
||||||
@@ -164,8 +154,7 @@ public class PasswordUtil {
|
|||||||
/**
|
/**
|
||||||
* 将十六进制字符串转换为字节数组
|
* 将十六进制字符串转换为字节数组
|
||||||
*
|
*
|
||||||
* @param hexString
|
* @param hexString 十六进制字符串
|
||||||
* 十六进制字符串
|
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static byte[] hexStringToBytes(String hexString) {
|
public static byte[] hexStringToBytes(String hexString) {
|
||||||
|
|||||||
@@ -256,6 +256,7 @@ public class ReflectHelper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 判断给定的字段是不是类中的属性
|
* 判断给定的字段是不是类中的属性
|
||||||
|
*
|
||||||
* @param field 字段名
|
* @param field 字段名
|
||||||
* @param clazz 类对象
|
* @param clazz 类对象
|
||||||
* @return
|
* @return
|
||||||
@@ -274,6 +275,7 @@ public class ReflectHelper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取class的 包括父类的
|
* 获取class的 包括父类的
|
||||||
|
*
|
||||||
* @param clazz
|
* @param clazz
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -292,6 +294,7 @@ public class ReflectHelper {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取表字段名
|
* 获取表字段名
|
||||||
|
*
|
||||||
* @param clazz
|
* @param clazz
|
||||||
* @param name
|
* @param name
|
||||||
* @return
|
* @return
|
||||||
|
|||||||
@@ -2,7 +2,6 @@ package org.jeecg.common.util;
|
|||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
|
|
||||||
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.constant.CommonConstant;
|
||||||
import org.jeecg.common.constant.ServiceNameConstants;
|
import org.jeecg.common.constant.ServiceNameConstants;
|
||||||
import org.springframework.beans.BeansException;
|
import org.springframework.beans.BeansException;
|
||||||
@@ -44,6 +43,7 @@ public class SpringContextUtils implements ApplicationContextAware {
|
|||||||
public static HttpServletRequest getHttpServletRequest() {
|
public static HttpServletRequest getHttpServletRequest() {
|
||||||
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
return ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取HttpServletResponse
|
* 获取HttpServletResponse
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import lombok.extern.slf4j.Slf4j;
|
|||||||
import org.jeecg.common.constant.CommonConstant;
|
import org.jeecg.common.constant.CommonConstant;
|
||||||
import org.jeecg.common.constant.SymbolConstant;
|
import org.jeecg.common.constant.SymbolConstant;
|
||||||
import org.jeecg.common.exception.JeecgSqlInjectionException;
|
import org.jeecg.common.exception.JeecgSqlInjectionException;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Matcher;
|
import java.util.regex.Matcher;
|
||||||
@@ -33,6 +34,7 @@ public class SqlInjectionUtil {
|
|||||||
* 完整匹配的key,不需要考虑前空格
|
* 完整匹配的key,不需要考虑前空格
|
||||||
*/
|
*/
|
||||||
private static List<String> FULL_MATCHING_KEYWRODS = new ArrayList<>();
|
private static List<String> FULL_MATCHING_KEYWRODS = new ArrayList<>();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
FULL_MATCHING_KEYWRODS.add(";");
|
FULL_MATCHING_KEYWRODS.add(";");
|
||||||
FULL_MATCHING_KEYWRODS.add("+");
|
FULL_MATCHING_KEYWRODS.add("+");
|
||||||
@@ -42,7 +44,7 @@ public class SqlInjectionUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* sql注入风险的 正则关键字
|
* sql注入风险的 正则关键字
|
||||||
*
|
* <p>
|
||||||
* 函数匹配,需要用正则模式
|
* 函数匹配,需要用正则模式
|
||||||
*/
|
*/
|
||||||
private final static String[] XSS_REGULAR_STR_ARRAY = new String[]{
|
private final static String[] XSS_REGULAR_STR_ARRAY = new String[]{
|
||||||
@@ -73,6 +75,7 @@ public class SqlInjectionUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* sql注入过滤处理,遇到注入关键字抛异常
|
* sql注入过滤处理,遇到注入关键字抛异常
|
||||||
|
*
|
||||||
* @param values
|
* @param values
|
||||||
*/
|
*/
|
||||||
public static void filterContentMulti(String... values) {
|
public static void filterContentMulti(String... values) {
|
||||||
@@ -81,7 +84,7 @@ public class SqlInjectionUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验比较严格
|
* 校验比较严格
|
||||||
*
|
* <p>
|
||||||
* sql注入过滤处理,遇到注入关键字抛异常
|
* sql注入过滤处理,遇到注入关键字抛异常
|
||||||
*
|
*
|
||||||
* @param value
|
* @param value
|
||||||
@@ -224,6 +227,7 @@ public class SqlInjectionUtil {
|
|||||||
/**
|
/**
|
||||||
* 【提醒:不通用】
|
* 【提醒:不通用】
|
||||||
* 仅用于Online报表SQL解析,注入过滤
|
* 仅用于Online报表SQL解析,注入过滤
|
||||||
|
*
|
||||||
* @param value
|
* @param value
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -260,6 +264,7 @@ public class SqlInjectionUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验是否有sql注释
|
* 校验是否有sql注释
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static void checkSqlAnnotation(String str) {
|
public static void checkSqlAnnotation(String str) {
|
||||||
@@ -287,6 +292,7 @@ public class SqlInjectionUtil {
|
|||||||
* @param table
|
* @param table
|
||||||
*/
|
*/
|
||||||
private static Pattern tableNamePattern = Pattern.compile("^[a-zA-Z][a-zA-Z0-9_\\$]{0,63}$");
|
private static Pattern tableNamePattern = Pattern.compile("^[a-zA-Z][a-zA-Z0-9_\\$]{0,63}$");
|
||||||
|
|
||||||
public static String getSqlInjectTableName(String table) {
|
public static String getSqlInjectTableName(String table) {
|
||||||
if (oConvertUtils.isEmpty(table)) {
|
if (oConvertUtils.isEmpty(table)) {
|
||||||
return table;
|
return table;
|
||||||
@@ -329,6 +335,7 @@ public class SqlInjectionUtil {
|
|||||||
* @param field
|
* @param field
|
||||||
*/
|
*/
|
||||||
static final Pattern fieldPattern = Pattern.compile("^[a-zA-Z0-9_]+$");
|
static final Pattern fieldPattern = Pattern.compile("^[a-zA-Z0-9_]+$");
|
||||||
|
|
||||||
public static String getSqlInjectField(String field) {
|
public static String getSqlInjectField(String field) {
|
||||||
if (oConvertUtils.isEmpty(field)) {
|
if (oConvertUtils.isEmpty(field)) {
|
||||||
return field;
|
return field;
|
||||||
@@ -375,9 +382,10 @@ public class SqlInjectionUtil {
|
|||||||
/**
|
/**
|
||||||
* 获取排序字段
|
* 获取排序字段
|
||||||
* 返回:字符串
|
* 返回:字符串
|
||||||
*
|
* <p>
|
||||||
* 1.将驼峰命名转化成下划线
|
* 1.将驼峰命名转化成下划线
|
||||||
* 2.限制sql注入
|
* 2.限制sql注入
|
||||||
|
*
|
||||||
* @param sortField 排序字段
|
* @param sortField 排序字段
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -389,9 +397,10 @@ public class SqlInjectionUtil {
|
|||||||
/**
|
/**
|
||||||
* 获取多个排序字段
|
* 获取多个排序字段
|
||||||
* 返回:数组
|
* 返回:数组
|
||||||
*
|
* <p>
|
||||||
* 1.将驼峰命名转化成下划线
|
* 1.将驼峰命名转化成下划线
|
||||||
* 2.限制sql注入
|
* 2.限制sql注入
|
||||||
|
*
|
||||||
* @param sortFields 多个排序字段
|
* @param sortFields 多个排序字段
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package org.jeecg.common.util;
|
package org.jeecg.common.util;
|
||||||
|
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.jeecg.common.api.CommonAPI;
|
import org.jeecg.common.api.CommonAPI;
|
||||||
@@ -11,8 +12,6 @@ import org.jeecg.common.exception.JeecgBoot401Exception;
|
|||||||
import org.jeecg.common.system.util.JwtUtil;
|
import org.jeecg.common.system.util.JwtUtil;
|
||||||
import org.jeecg.common.system.vo.LoginUser;
|
import org.jeecg.common.system.vo.LoginUser;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author scott
|
* @Author scott
|
||||||
* @Date 2019/9/23 14:12
|
* @Date 2019/9/23 14:12
|
||||||
@@ -41,6 +40,7 @@ public class TokenUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取 request 里传递的 token
|
* 获取 request 里传递的 token
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static String getTokenByRequest() {
|
public static String getTokenByRequest() {
|
||||||
@@ -124,6 +124,7 @@ public class TokenUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 刷新token(保证用户在线操作不掉线)
|
* 刷新token(保证用户在线操作不掉线)
|
||||||
|
*
|
||||||
* @param token
|
* @param token
|
||||||
* @param userName
|
* @param userName
|
||||||
* @param passWord
|
* @param passWord
|
||||||
|
|||||||
@@ -4,9 +4,7 @@ package org.jeecg.common.util;
|
|||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @Author 张代浩
|
* @Author 张代浩
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class UUIDGenerator {
|
public class UUIDGenerator {
|
||||||
|
|
||||||
@@ -25,6 +23,7 @@ public class UUIDGenerator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static final int IP;
|
private static final int IP;
|
||||||
|
|
||||||
static {
|
static {
|
||||||
int ipadd;
|
int ipadd;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -6,14 +6,16 @@ import io.netty.util.internal.StringUtil;
|
|||||||
* 流水号生成规则(按默认规则递增,数字从1-99开始递增,数字到99,递增字母;位数不够增加位数)
|
* 流水号生成规则(按默认规则递增,数字从1-99开始递增,数字到99,递增字母;位数不够增加位数)
|
||||||
* A001
|
* A001
|
||||||
* A001A002
|
* A001A002
|
||||||
* @Author zhangdaihao
|
|
||||||
*
|
*
|
||||||
|
* @Author zhangdaihao
|
||||||
*/
|
*/
|
||||||
public class YouBianCodeUtil {
|
public class YouBianCodeUtil {
|
||||||
|
|
||||||
// 数字位数(默认生成3位的数字)
|
// 数字位数(默认生成3位的数字)
|
||||||
|
|
||||||
/**代表数字位数*/
|
/**
|
||||||
|
* 代表数字位数
|
||||||
|
*/
|
||||||
private static final int NUM_LENGTH = 2;
|
private static final int NUM_LENGTH = 2;
|
||||||
|
|
||||||
public static final int ZHANWEI_LENGTH = 1 + NUM_LENGTH;
|
public static final int ZHANWEI_LENGTH = 1 + NUM_LENGTH;
|
||||||
@@ -70,7 +72,7 @@ public class YouBianCodeUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据父亲code,获取下级的下一个code
|
* 根据父亲code,获取下级的下一个code
|
||||||
*
|
* <p>
|
||||||
* 例如:父亲CODE:A01
|
* 例如:父亲CODE:A01
|
||||||
* 当前CODE:A01B03
|
* 当前CODE:A01B03
|
||||||
* 获取的code:A01B04
|
* 获取的code:A01B04
|
||||||
@@ -92,7 +94,6 @@ public class YouBianCodeUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将数字前面位数补零
|
* 将数字前面位数补零
|
||||||
*
|
*
|
||||||
@@ -141,6 +142,7 @@ public class YouBianCodeUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据数字位数获取最大值
|
* 根据数字位数获取最大值
|
||||||
|
*
|
||||||
* @param length
|
* @param length
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -154,6 +156,7 @@ public class YouBianCodeUtil {
|
|||||||
}
|
}
|
||||||
return Integer.parseInt(maxNum.toString());
|
return Integer.parseInt(maxNum.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String[] cutYouBianCode(String code) {
|
public static String[] cutYouBianCode(String code) {
|
||||||
if (code == null || StringUtil.isNullOrEmpty(code)) {
|
if (code == null || StringUtil.isNullOrEmpty(code)) {
|
||||||
return null;
|
return null;
|
||||||
|
|||||||
@@ -6,16 +6,20 @@ import org.jeecg.common.constant.CacheConstant;
|
|||||||
import org.jeecg.common.system.vo.DynamicDataSourceModel;
|
import org.jeecg.common.system.vo.DynamicDataSourceModel;
|
||||||
import org.jeecg.common.util.SpringContextUtils;
|
import org.jeecg.common.util.SpringContextUtils;
|
||||||
import org.springframework.data.redis.core.RedisTemplate;
|
import org.springframework.data.redis.core.RedisTemplate;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 数据源缓存池
|
* 数据源缓存池
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
public class DataSourceCachePool {
|
public class DataSourceCachePool {
|
||||||
/** 数据源连接池缓存【本地 class缓存 - 不支持分布式】 */
|
/**
|
||||||
|
* 数据源连接池缓存【本地 class缓存 - 不支持分布式】
|
||||||
|
*/
|
||||||
private static Map<String, DruidDataSource> dbSources = new HashMap<>();
|
private static Map<String, DruidDataSource> dbSources = new HashMap<>();
|
||||||
private static RedisTemplate<String, Object> redisTemplate;
|
private static RedisTemplate<String, Object> redisTemplate;
|
||||||
|
|
||||||
|
|||||||
@@ -9,11 +9,13 @@ import java.util.Map;
|
|||||||
/**
|
/**
|
||||||
* 数据库类型判断
|
* 数据库类型判断
|
||||||
* 【有些数据库引擎是一样的,以达到复用目的】
|
* 【有些数据库引擎是一样的,以达到复用目的】
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
public class DbTypeUtils {
|
public class DbTypeUtils {
|
||||||
|
|
||||||
public static Map<String, String> dialectMap = new HashMap<String, String>();
|
public static Map<String, String> dialectMap = new HashMap<String, String>();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
dialectMap.put("mysql", "org.hibernate.dialect.MySQL5InnoDBDialect");
|
dialectMap.put("mysql", "org.hibernate.dialect.MySQL5InnoDBDialect");
|
||||||
// mariadb数据库 1 --
|
// mariadb数据库 1 --
|
||||||
@@ -77,9 +79,9 @@ public class DbTypeUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据枚举类 获取数据库类型的字符串
|
* 根据枚举类 获取数据库类型的字符串
|
||||||
|
*
|
||||||
* @param dbType
|
* @param dbType
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -100,6 +102,7 @@ public class DbTypeUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据枚举类 获取数据库方言字符串
|
* 根据枚举类 获取数据库方言字符串
|
||||||
|
*
|
||||||
* @param dbType
|
* @param dbType
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -4,14 +4,12 @@ import com.alibaba.druid.pool.DruidDataSource;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
import org.jeecg.common.exception.JeecgBootException;
|
import org.jeecg.common.exception.JeecgBootException;
|
||||||
import org.jeecg.common.exception.JeecgBootException;
|
|
||||||
import org.jeecg.common.system.vo.DynamicDataSourceModel;
|
import org.jeecg.common.system.vo.DynamicDataSourceModel;
|
||||||
import org.jeecg.common.util.ReflectHelper;
|
import org.jeecg.common.util.ReflectHelper;
|
||||||
import org.jeecg.common.util.oConvertUtils;
|
import org.jeecg.common.util.oConvertUtils;
|
||||||
import org.springframework.jdbc.core.JdbcTemplate;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
||||||
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -120,6 +118,7 @@ public class DynamicDBUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据数据源获取NamedParameterJdbcTemplate
|
* 根据数据源获取NamedParameterJdbcTemplate
|
||||||
|
*
|
||||||
* @param dbKey
|
* @param dbKey
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -240,6 +239,7 @@ public class DynamicDBUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询数量
|
* 查询数量
|
||||||
|
*
|
||||||
* @param dbKey
|
* @param dbKey
|
||||||
* @param sql
|
* @param sql
|
||||||
* @param param
|
* @param param
|
||||||
@@ -252,6 +252,7 @@ public class DynamicDBUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询列表数据
|
* 查询列表数据
|
||||||
|
*
|
||||||
* @param dbKey
|
* @param dbKey
|
||||||
* @param sql
|
* @param sql
|
||||||
* @param param
|
* @param param
|
||||||
@@ -283,6 +284,7 @@ public class DynamicDBUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 此方法只能返回单列,不能返回实体类
|
* 此方法只能返回单列,不能返回实体类
|
||||||
|
*
|
||||||
* @param dbKey 数据源的key
|
* @param dbKey 数据源的key
|
||||||
* @param sql sal
|
* @param sql sal
|
||||||
* @param clazz 类
|
* @param clazz 类
|
||||||
|
|||||||
@@ -42,7 +42,9 @@ public class FreemarkerParseFactory {
|
|||||||
|
|
||||||
private static StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
|
private static StringTemplateLoader stringTemplateLoader = new StringTemplateLoader();
|
||||||
|
|
||||||
/**使用内嵌的(?ms)打开单行和多行模式*/
|
/**
|
||||||
|
* 使用内嵌的(?ms)打开单行和多行模式
|
||||||
|
*/
|
||||||
private final static Pattern NOTES_PATTERN = Pattern
|
private final static Pattern NOTES_PATTERN = Pattern
|
||||||
.compile("(?ms)/\\*.*?\\*/|^\\s*//.*?$");
|
.compile("(?ms)/\\*.*?\\*/|^\\s*//.*?$");
|
||||||
|
|
||||||
@@ -124,6 +126,7 @@ public class FreemarkerParseFactory {
|
|||||||
public static String parseTemplateContent(String tplContent, Map<String, Object> paras) {
|
public static String parseTemplateContent(String tplContent, Map<String, Object> paras) {
|
||||||
return parseTemplateContent(tplContent, paras, false);
|
return parseTemplateContent(tplContent, paras, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String parseTemplateContent(String tplContent, Map<String, Object> paras, boolean keepSpace) {
|
public static String parseTemplateContent(String tplContent, Map<String, Object> paras, boolean keepSpace) {
|
||||||
try {
|
try {
|
||||||
String sqlUnderline = "sql_";
|
String sqlUnderline = "sql_";
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ public class AesEncryptUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 加密方法
|
* 加密方法
|
||||||
|
*
|
||||||
* @param data 要加密的数据
|
* @param data 要加密的数据
|
||||||
* @param key 加密key
|
* @param key 加密key
|
||||||
* @param iv 加密iv
|
* @param iv 加密iv
|
||||||
@@ -59,6 +60,7 @@ public class AesEncryptUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 解密方法
|
* 解密方法
|
||||||
|
*
|
||||||
* @param data 要解密的数据
|
* @param data 要解密的数据
|
||||||
* @param key 解密key
|
* @param key 解密key
|
||||||
* @param iv 解密iv
|
* @param iv 解密iv
|
||||||
@@ -84,6 +86,7 @@ public class AesEncryptUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用默认的key和iv加密
|
* 使用默认的key和iv加密
|
||||||
|
*
|
||||||
* @param data
|
* @param data
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
@@ -94,6 +97,7 @@ public class AesEncryptUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 使用默认的key和iv解密
|
* 使用默认的key和iv解密
|
||||||
|
*
|
||||||
* @param data
|
* @param data
|
||||||
* @return
|
* @return
|
||||||
* @throws Exception
|
* @throws Exception
|
||||||
@@ -103,7 +107,6 @@ public class AesEncryptUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// /**
|
// /**
|
||||||
// * 测试
|
// * 测试
|
||||||
// */
|
// */
|
||||||
|
|||||||
@@ -23,8 +23,11 @@ public class SsrfFileTypeFilter {
|
|||||||
* 允许操作文件类型白名单
|
* 允许操作文件类型白名单
|
||||||
*/
|
*/
|
||||||
private final static List<String> FILE_TYPE_WHITE_LIST = new ArrayList<>();
|
private final static List<String> FILE_TYPE_WHITE_LIST = new ArrayList<>();
|
||||||
/**初始化文件头类型,不够的自行补充*/
|
/**
|
||||||
|
* 初始化文件头类型,不够的自行补充
|
||||||
|
*/
|
||||||
final static HashMap<String, String> FILE_TYPE_MAP = new HashMap<>();
|
final static HashMap<String, String> FILE_TYPE_MAP = new HashMap<>();
|
||||||
|
|
||||||
static {
|
static {
|
||||||
//图片文件
|
//图片文件
|
||||||
FILE_TYPE_WHITE_LIST.add("jpg");
|
FILE_TYPE_WHITE_LIST.add("jpg");
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import java.util.regex.PatternSyntaxException;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件上传字符串过滤特殊字符
|
* 文件上传字符串过滤特殊字符
|
||||||
|
*
|
||||||
* @author: jeecg-boot
|
* @author: jeecg-boot
|
||||||
*/
|
*/
|
||||||
public class StrAttackFilter {
|
public class StrAttackFilter {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package org.jeecg.common.util;
|
package org.jeecg.common.util;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONArray;
|
import com.alibaba.fastjson.JSONArray;
|
||||||
|
import jakarta.servlet.http.HttpServletRequest;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.apache.commons.codec.binary.Base64;
|
import org.apache.commons.codec.binary.Base64;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
@@ -9,7 +10,6 @@ import org.jeecg.common.constant.CommonConstant;
|
|||||||
import org.jeecg.common.constant.SymbolConstant;
|
import org.jeecg.common.constant.SymbolConstant;
|
||||||
import org.springframework.beans.BeanUtils;
|
import org.springframework.beans.BeanUtils;
|
||||||
|
|
||||||
import jakarta.servlet.http.HttpServletRequest;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.UnsupportedEncodingException;
|
import java.io.UnsupportedEncodingException;
|
||||||
@@ -23,9 +23,7 @@ import java.util.regex.Matcher;
|
|||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @Author 张代浩
|
* @Author 张代浩
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
public class oConvertUtils {
|
public class oConvertUtils {
|
||||||
@@ -236,13 +234,13 @@ public class oConvertUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 转义成Unicode编码
|
* 转义成Unicode编码
|
||||||
|
*
|
||||||
* @param s
|
* @param s
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
/*public static String escapeJava(Object s) {
|
/*public static String escapeJava(Object s) {
|
||||||
return StringEscapeUtils.escapeJava(getString(s));
|
return StringEscapeUtils.escapeJava(getString(s));
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
public static String getString(Object object) {
|
public static String getString(Object object) {
|
||||||
if (isEmpty(object)) {
|
if (isEmpty(object)) {
|
||||||
return "";
|
return "";
|
||||||
@@ -313,8 +311,7 @@ public class oConvertUtils {
|
|||||||
/**
|
/**
|
||||||
* 判断一个类是否为基本数据类型。
|
* 判断一个类是否为基本数据类型。
|
||||||
*
|
*
|
||||||
* @param clazz
|
* @param clazz 要判断的类。
|
||||||
* 要判断的类。
|
|
||||||
* @return true 表示为基本数据类型。
|
* @return true 表示为基本数据类型。
|
||||||
*/
|
*/
|
||||||
private static boolean isBaseDataType(Class clazz) throws Exception {
|
private static boolean isBaseDataType(Class clazz) throws Exception {
|
||||||
@@ -338,8 +335,7 @@ public class oConvertUtils {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param request
|
* @param request IP
|
||||||
* IP
|
|
||||||
* @return IP Address
|
* @return IP Address
|
||||||
*/
|
*/
|
||||||
public static String getIpAddrByRequest(HttpServletRequest request) {
|
public static String getIpAddrByRequest(HttpServletRequest request) {
|
||||||
@@ -532,8 +528,7 @@ public class oConvertUtils {
|
|||||||
* 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
|
* 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
|
||||||
* 例如:hello_world->helloWorld
|
* 例如:hello_world->helloWorld
|
||||||
*
|
*
|
||||||
* @param name
|
* @param name 转换前的下划线大写方式命名的字符串
|
||||||
* 转换前的下划线大写方式命名的字符串
|
|
||||||
* @return 转换后的驼峰式命名的字符串
|
* @return 转换后的驼峰式命名的字符串
|
||||||
*/
|
*/
|
||||||
public static String camelName(String name) {
|
public static String camelName(String name) {
|
||||||
@@ -574,8 +569,7 @@ public class oConvertUtils {
|
|||||||
* 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
|
* 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
|
||||||
* 例如:hello_world,test_id->helloWorld,testId
|
* 例如:hello_world,test_id->helloWorld,testId
|
||||||
*
|
*
|
||||||
* @param name
|
* @param name 转换前的下划线大写方式命名的字符串
|
||||||
* 转换前的下划线大写方式命名的字符串
|
|
||||||
* @return 转换后的驼峰式命名的字符串
|
* @return 转换后的驼峰式命名的字符串
|
||||||
*/
|
*/
|
||||||
public static String camelNames(String names) {
|
public static String camelNames(String names) {
|
||||||
@@ -593,13 +587,13 @@ public class oConvertUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//update-begin--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
|
//update-begin--Author:zhoujf Date:20180503 for:TASK #2500 【代码生成器】代码生成器开发一通用模板生成功能
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 将下划线大写方式命名的字符串转换为驼峰式。(首字母写)
|
* 将下划线大写方式命名的字符串转换为驼峰式。(首字母写)
|
||||||
* 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
|
* 如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。</br>
|
||||||
* 例如:hello_world->HelloWorld
|
* 例如:hello_world->HelloWorld
|
||||||
*
|
*
|
||||||
* @param name
|
* @param name 转换前的下划线大写方式命名的字符串
|
||||||
* 转换前的下划线大写方式命名的字符串
|
|
||||||
* @return 转换后的驼峰式命名的字符串
|
* @return 转换后的驼峰式命名的字符串
|
||||||
*/
|
*/
|
||||||
public static String camelNameCapFirst(String name) {
|
public static String camelNameCapFirst(String name) {
|
||||||
@@ -629,6 +623,7 @@ public class oConvertUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将驼峰命名转化成下划线
|
* 将驼峰命名转化成下划线
|
||||||
|
*
|
||||||
* @param para
|
* @param para
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -652,6 +647,7 @@ public class oConvertUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 随机数
|
* 随机数
|
||||||
|
*
|
||||||
* @param place 定义随机数的位数
|
* @param place 定义随机数的位数
|
||||||
*/
|
*/
|
||||||
public static String randomGen(int place) {
|
public static String randomGen(int place) {
|
||||||
@@ -684,6 +680,7 @@ public class oConvertUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将map的key全部转成小写
|
* 将map的key全部转成小写
|
||||||
|
*
|
||||||
* @param list
|
* @param list
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -703,6 +700,7 @@ public class oConvertUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将entityList转换成modelList
|
* 将entityList转换成modelList
|
||||||
|
*
|
||||||
* @param fromList
|
* @param fromList
|
||||||
* @param tClass
|
* @param tClass
|
||||||
* @param <F>
|
* @param <F>
|
||||||
@@ -835,6 +833,7 @@ public class oConvertUtils {
|
|||||||
/**
|
/**
|
||||||
* 比较带逗号的字符串
|
* 比较带逗号的字符串
|
||||||
* QQYUN-5212【简流】按日期触发 多选 人员组件 选择顺序不一致时 不触发,应该是统一问题 包括多选部门组件
|
* QQYUN-5212【简流】按日期触发 多选 人员组件 选择顺序不一致时 不触发,应该是统一问题 包括多选部门组件
|
||||||
|
*
|
||||||
* @param oldVal
|
* @param oldVal
|
||||||
* @param newVal
|
* @param newVal
|
||||||
* @return
|
* @return
|
||||||
@@ -907,6 +906,7 @@ public class oConvertUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 读取静态文本内容
|
* 读取静态文本内容
|
||||||
|
*
|
||||||
* @param url
|
* @param url
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -924,6 +924,7 @@ public class oConvertUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 将List 转成 JSONArray
|
* 将List 转成 JSONArray
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static JSONArray list2JSONArray(List<String> list) {
|
public static JSONArray list2JSONArray(List<String> list) {
|
||||||
@@ -940,6 +941,7 @@ public class oConvertUtils {
|
|||||||
/**
|
/**
|
||||||
* 判断两个list中的元素是否完全一致
|
* 判断两个list中的元素是否完全一致
|
||||||
* QQYUN-5326【简流】获取组织人员 单/多 筛选条件 没有部门筛选
|
* QQYUN-5326【简流】获取组织人员 单/多 筛选条件 没有部门筛选
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static boolean isEqList(List<String> list1, List<String> list2) {
|
public static boolean isEqList(List<String> list1, List<String> list2) {
|
||||||
@@ -965,6 +967,7 @@ public class oConvertUtils {
|
|||||||
/**
|
/**
|
||||||
* 判断 list1中的元素是否在list2中出现
|
* 判断 list1中的元素是否在list2中出现
|
||||||
* QQYUN-5326【简流】获取组织人员 单/多 筛选条件 没有部门筛选
|
* QQYUN-5326【简流】获取组织人员 单/多 筛选条件 没有部门筛选
|
||||||
|
*
|
||||||
* @param list1
|
* @param list1
|
||||||
* @param list2
|
* @param list2
|
||||||
* @return
|
* @return
|
||||||
@@ -987,6 +990,7 @@ public class oConvertUtils {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算文件大小转成MB
|
* 计算文件大小转成MB
|
||||||
|
*
|
||||||
* @param uploadCount
|
* @param uploadCount
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -20,7 +20,6 @@ import java.io.BufferedInputStream;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.net.URLDecoder;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
@@ -153,6 +152,7 @@ public class OssBootUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取原始URL
|
* 获取原始URL
|
||||||
|
*
|
||||||
* @param url: 原始URL
|
* @param url: 原始URL
|
||||||
* @Return: java.lang.String
|
* @Return: java.lang.String
|
||||||
*/
|
*/
|
||||||
@@ -166,6 +166,7 @@ public class OssBootUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 文件上传
|
* 文件上传
|
||||||
|
*
|
||||||
* @param file
|
* @param file
|
||||||
* @param fileDir
|
* @param fileDir
|
||||||
* @return
|
* @return
|
||||||
@@ -215,6 +216,7 @@ public class OssBootUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除文件
|
* 删除文件
|
||||||
|
*
|
||||||
* @param url
|
* @param url
|
||||||
*/
|
*/
|
||||||
public static void deleteUrl(String url) {
|
public static void deleteUrl(String url) {
|
||||||
@@ -223,6 +225,7 @@ public class OssBootUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除文件
|
* 删除文件
|
||||||
|
*
|
||||||
* @param url
|
* @param url
|
||||||
*/
|
*/
|
||||||
public static void deleteUrl(String url, String bucket) {
|
public static void deleteUrl(String url, String bucket) {
|
||||||
@@ -244,6 +247,7 @@ public class OssBootUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除文件
|
* 删除文件
|
||||||
|
*
|
||||||
* @param fileName
|
* @param fileName
|
||||||
*/
|
*/
|
||||||
public static void delete(String fileName) {
|
public static void delete(String fileName) {
|
||||||
@@ -252,6 +256,7 @@ public class OssBootUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取文件流
|
* 获取文件流
|
||||||
|
*
|
||||||
* @param objectName
|
* @param objectName
|
||||||
* @param bucket
|
* @param bucket
|
||||||
* @return
|
* @return
|
||||||
@@ -286,6 +291,7 @@ public class OssBootUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取文件外链
|
* 获取文件外链
|
||||||
|
*
|
||||||
* @param bucketName
|
* @param bucketName
|
||||||
* @param objectName
|
* @param objectName
|
||||||
* @param expires
|
* @param expires
|
||||||
@@ -327,6 +333,7 @@ public class OssBootUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 上传文件到oss
|
* 上传文件到oss
|
||||||
|
*
|
||||||
* @param stream
|
* @param stream
|
||||||
* @param relativePath
|
* @param relativePath
|
||||||
* @return
|
* @return
|
||||||
@@ -351,11 +358,12 @@ public class OssBootUtil {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 替换前缀,防止key不一致导致获取不到文件
|
* 替换前缀,防止key不一致导致获取不到文件
|
||||||
|
*
|
||||||
* @param objectName 文件上传路径 key
|
* @param objectName 文件上传路径 key
|
||||||
* @param customBucket 自定义桶
|
* @param customBucket 自定义桶
|
||||||
|
* @return
|
||||||
* @date 2022-01-20
|
* @date 2022-01-20
|
||||||
* @author lsq
|
* @author lsq
|
||||||
* @return
|
|
||||||
*/
|
*/
|
||||||
private static String replacePrefix(String objectName, String customBucket) {
|
private static String replacePrefix(String objectName, String customBucket) {
|
||||||
log.info("------replacePrefix---替换前---objectName:{}", objectName);
|
log.info("------replacePrefix---替换前---objectName:{}", objectName);
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import java.util.regex.Pattern;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询表/字段 黑名单处理
|
* 查询表/字段 黑名单处理
|
||||||
|
*
|
||||||
* @Author taoYan
|
* @Author taoYan
|
||||||
* @Date 2022/3/17 11:21
|
* @Date 2022/3/17 11:21
|
||||||
**/
|
**/
|
||||||
@@ -38,6 +39,7 @@ public abstract class AbstractQueryBlackListHandler {
|
|||||||
/**
|
/**
|
||||||
* 根据 sql语句 获取表和字段信息,需要到具体的实现类重写此方法-
|
* 根据 sql语句 获取表和字段信息,需要到具体的实现类重写此方法-
|
||||||
* 不同的场景 处理可能不太一样 需要自定义,但是返回值确定
|
* 不同的场景 处理可能不太一样 需要自定义,但是返回值确定
|
||||||
|
*
|
||||||
* @param sql
|
* @param sql
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -46,6 +48,7 @@ public abstract class AbstractQueryBlackListHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验sql语句 成功返回true
|
* 校验sql语句 成功返回true
|
||||||
|
*
|
||||||
* @param sql
|
* @param sql
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@@ -94,6 +97,7 @@ public abstract class AbstractQueryBlackListHandler {
|
|||||||
/**
|
/**
|
||||||
* 校验表名和字段名是否有效,或是是否会带些特殊的字符串进行sql注入
|
* 校验表名和字段名是否有效,或是是否会带些特殊的字符串进行sql注入
|
||||||
* issues/4983 SQL Injection in 3.5.1 #4983
|
* issues/4983 SQL Injection in 3.5.1 #4983
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
private boolean checkTableAndFieldsName(List<QueryTable> list) {
|
private boolean checkTableAndFieldsName(List<QueryTable> list) {
|
||||||
@@ -119,6 +123,7 @@ public abstract class AbstractQueryBlackListHandler {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否包含特殊的字符串
|
* 是否包含特殊的字符串
|
||||||
|
*
|
||||||
* @param name
|
* @param name
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user