mirror of
https://gitee.com/dromara/RuoYi-Vue-Plus.git
synced 2026-09-19 01:48:47 +08:00
Merge branch 'dev' of https://gitee.com/doub1eH/RuoYi-Vue-Plus into dev
This commit is contained in:
commit
8d595cf1c4
@ -1,5 +1,5 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="ruoyi-server" type="docker-deploy" factoryName="dockerfile" server-name="演示机">
|
||||
<configuration default="false" name="ruoyi-server" type="docker-deploy" factoryName="dockerfile" server-name="Docker">
|
||||
<deployment type="dockerfile">
|
||||
<settings>
|
||||
<option name="imageTag" value="ruoyi/ruoyi-server:5.2.3" />
|
||||
|
||||
@ -22,7 +22,9 @@
|
||||
|
||||
> 系统演示: [传送门](https://plus-doc.dromara.org/#/common/demo_system)
|
||||
|
||||
> 前端项目地址: [plus-ui](https://gitee.com/JavaLionLi/plus-ui)
|
||||
> 官方前端项目地址: [plus-ui](https://gitee.com/JavaLionLi/plus-ui)<br>
|
||||
> 成员前端项目地址: 基于vben [ruoyi-plus-vben](https://gitee.com/dapppp/ruoyi-plus-vben)<br>
|
||||
> 成员前端项目地址: 基于vben5 [ruoyi-plus-vben5](https://gitee.com/dapppp/ruoyi-plus-vben5)
|
||||
|
||||
> 文档地址: [plus-doc](https://plus-doc.dromara.org)
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
|
||||
FROM bellsoft/liberica-openjdk-debian:17.0.11-cds
|
||||
#FROM bellsoft/liberica-openjdk-debian:21.0.3-cds
|
||||
#FROM bellsoft/liberica-openjdk-debian:21.0.5-cds
|
||||
#FROM findepi/graalvm:java17-native
|
||||
|
||||
LABEL maintainer="Lion Li"
|
||||
|
||||
@ -25,7 +25,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 客户端工具类
|
||||
* 客户端工具类,提供获取请求参数、响应处理、头部信息等常用操作
|
||||
*
|
||||
* @author ruoyi
|
||||
*/
|
||||
@ -33,52 +33,73 @@ import java.util.Map;
|
||||
public class ServletUtils extends JakartaServletUtil {
|
||||
|
||||
/**
|
||||
* 获取String参数
|
||||
* 获取指定名称的 String 类型的请求参数
|
||||
*
|
||||
* @param name 参数名
|
||||
* @return 参数值
|
||||
*/
|
||||
public static String getParameter(String name) {
|
||||
return getRequest().getParameter(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取String参数
|
||||
* 获取指定名称的 String 类型的请求参数,若参数不存在,则返回默认值
|
||||
*
|
||||
* @param name 参数名
|
||||
* @param defaultValue 默认值
|
||||
* @return 参数值或默认值
|
||||
*/
|
||||
public static String getParameter(String name, String defaultValue) {
|
||||
return Convert.toStr(getRequest().getParameter(name), defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取Integer参数
|
||||
* 获取指定名称的 Integer 类型的请求参数
|
||||
*
|
||||
* @param name 参数名
|
||||
* @return 参数值
|
||||
*/
|
||||
public static Integer getParameterToInt(String name) {
|
||||
return Convert.toInt(getRequest().getParameter(name));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取Integer参数
|
||||
* 获取指定名称的 Integer 类型的请求参数,若参数不存在,则返回默认值
|
||||
*
|
||||
* @param name 参数名
|
||||
* @param defaultValue 默认值
|
||||
* @return 参数值或默认值
|
||||
*/
|
||||
public static Integer getParameterToInt(String name, Integer defaultValue) {
|
||||
return Convert.toInt(getRequest().getParameter(name), defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取Boolean参数
|
||||
* 获取指定名称的 Boolean 类型的请求参数
|
||||
*
|
||||
* @param name 参数名
|
||||
* @return 参数值
|
||||
*/
|
||||
public static Boolean getParameterToBool(String name) {
|
||||
return Convert.toBool(getRequest().getParameter(name));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取Boolean参数
|
||||
* 获取指定名称的 Boolean 类型的请求参数,若参数不存在,则返回默认值
|
||||
*
|
||||
* @param name 参数名
|
||||
* @param defaultValue 默认值
|
||||
* @return 参数值或默认值
|
||||
*/
|
||||
public static Boolean getParameterToBool(String name, Boolean defaultValue) {
|
||||
return Convert.toBool(getRequest().getParameter(name), defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得所有请求参数
|
||||
* 获取所有请求参数(以 Map 的形式返回)
|
||||
*
|
||||
* @param request 请求对象{@link ServletRequest}
|
||||
* @return Map
|
||||
* @return 请求参数的 Map,键为参数名,值为参数值数组
|
||||
*/
|
||||
public static Map<String, String[]> getParams(ServletRequest request) {
|
||||
final Map<String, String[]> map = request.getParameterMap();
|
||||
@ -86,10 +107,10 @@ public class ServletUtils extends JakartaServletUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获得所有请求参数
|
||||
* 获取所有请求参数(以 Map 的形式返回,值为字符串形式的拼接)
|
||||
*
|
||||
* @param request 请求对象{@link ServletRequest}
|
||||
* @return Map
|
||||
* @return 请求参数的 Map,键为参数名,值为拼接后的字符串
|
||||
*/
|
||||
public static Map<String, String> getParamMap(ServletRequest request) {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
@ -100,7 +121,9 @@ public class ServletUtils extends JakartaServletUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取request
|
||||
* 获取当前 HTTP 请求对象
|
||||
*
|
||||
* @return 当前 HTTP 请求对象
|
||||
*/
|
||||
public static HttpServletRequest getRequest() {
|
||||
try {
|
||||
@ -111,7 +134,9 @@ public class ServletUtils extends JakartaServletUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取response
|
||||
* 获取当前 HTTP 响应对象
|
||||
*
|
||||
* @return 当前 HTTP 响应对象
|
||||
*/
|
||||
public static HttpServletResponse getResponse() {
|
||||
try {
|
||||
@ -122,12 +147,25 @@ public class ServletUtils extends JakartaServletUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取session
|
||||
* 获取当前请求的 HttpSession 对象
|
||||
* <p>
|
||||
* 如果当前请求已经关联了一个会话(即已经存在有效的 session ID),
|
||||
* 则返回该会话对象;如果没有关联会话,则会创建一个新的会话对象并返回。
|
||||
* <p>
|
||||
* HttpSession 用于存储会话级别的数据,如用户登录信息、购物车内容等,
|
||||
* 可以在多个请求之间共享会话数据
|
||||
*
|
||||
* @return 当前请求的 HttpSession 对象
|
||||
*/
|
||||
public static HttpSession getSession() {
|
||||
return getRequest().getSession();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前请求的请求属性
|
||||
*
|
||||
* @return {@link ServletRequestAttributes} 请求属性对象
|
||||
*/
|
||||
public static ServletRequestAttributes getRequestAttributes() {
|
||||
try {
|
||||
RequestAttributes attributes = RequestContextHolder.getRequestAttributes();
|
||||
@ -137,6 +175,13 @@ public class ServletUtils extends JakartaServletUtil {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取指定请求头的值,如果头部为空则返回空字符串
|
||||
*
|
||||
* @param request 请求对象
|
||||
* @param name 头部名称
|
||||
* @return 头部值
|
||||
*/
|
||||
public static String getHeader(HttpServletRequest request, String name) {
|
||||
String value = request.getHeader(name);
|
||||
if (StringUtils.isEmpty(value)) {
|
||||
@ -145,6 +190,12 @@ public class ServletUtils extends JakartaServletUtil {
|
||||
return urlDecode(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有请求头的 Map,键为头部名称,值为头部值
|
||||
*
|
||||
* @param request 请求对象
|
||||
* @return 请求头的 Map
|
||||
*/
|
||||
public static Map<String, String> getHeaders(HttpServletRequest request) {
|
||||
Map<String, String> map = new LinkedCaseInsensitiveMap<>();
|
||||
Enumeration<String> enumeration = request.getHeaderNames();
|
||||
@ -159,7 +210,7 @@ public class ServletUtils extends JakartaServletUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 将字符串渲染到客户端
|
||||
* 将字符串渲染到客户端(以 JSON 格式返回)
|
||||
*
|
||||
* @param response 渲染对象
|
||||
* @param string 待渲染的字符串
|
||||
@ -176,37 +227,47 @@ public class ServletUtils extends JakartaServletUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否是Ajax异步请求
|
||||
* 判断当前请求是否为 Ajax 异步请求
|
||||
*
|
||||
* @param request
|
||||
* @param request 请求对象
|
||||
* @return 是否为 Ajax 请求
|
||||
*/
|
||||
public static boolean isAjaxRequest(HttpServletRequest request) {
|
||||
|
||||
// 判断 Accept 头部是否包含 application/json
|
||||
String accept = request.getHeader("accept");
|
||||
if (accept != null && accept.contains(MediaType.APPLICATION_JSON_VALUE)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 判断 X-Requested-With 头部是否包含 XMLHttpRequest
|
||||
String xRequestedWith = request.getHeader("X-Requested-With");
|
||||
if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 判断 URI 后缀是否为 .json 或 .xml
|
||||
String uri = request.getRequestURI();
|
||||
if (StringUtils.equalsAnyIgnoreCase(uri, ".json", ".xml")) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// 判断请求参数 __ajax 是否为 json 或 xml
|
||||
String ajax = request.getParameter("__ajax");
|
||||
return StringUtils.equalsAnyIgnoreCase(ajax, "json", "xml");
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取客户端 IP 地址
|
||||
*
|
||||
* @return 客户端 IP 地址
|
||||
*/
|
||||
public static String getClientIP() {
|
||||
return getClientIP(getRequest());
|
||||
}
|
||||
|
||||
/**
|
||||
* 内容编码
|
||||
* 对内容进行 URL 编码
|
||||
*
|
||||
* @param str 内容
|
||||
* @return 编码后的内容
|
||||
@ -216,7 +277,7 @@ public class ServletUtils extends JakartaServletUtil {
|
||||
}
|
||||
|
||||
/**
|
||||
* 内容解码
|
||||
* 对内容进行 URL 解码
|
||||
*
|
||||
* @param str 内容
|
||||
* @return 解码后的内容
|
||||
|
||||
@ -19,10 +19,12 @@ import java.util.Map;
|
||||
* @author 老马
|
||||
*/
|
||||
public class EncryptUtils {
|
||||
|
||||
/**
|
||||
* 公钥
|
||||
*/
|
||||
public static final String PUBLIC_KEY = "publicKey";
|
||||
|
||||
/**
|
||||
* 私钥
|
||||
*/
|
||||
@ -51,7 +53,7 @@ public class EncryptUtils {
|
||||
/**
|
||||
* AES加密
|
||||
*
|
||||
* @param data 待解密数据
|
||||
* @param data 待加密数据
|
||||
* @param password 秘钥字符串
|
||||
* @return 加密后字符串, 采用Base64编码
|
||||
*/
|
||||
@ -70,7 +72,7 @@ public class EncryptUtils {
|
||||
/**
|
||||
* AES加密
|
||||
*
|
||||
* @param data 待解密数据
|
||||
* @param data 待加密数据
|
||||
* @param password 秘钥字符串
|
||||
* @return 加密后字符串, 采用Hex编码
|
||||
*/
|
||||
@ -208,7 +210,7 @@ public class EncryptUtils {
|
||||
/**
|
||||
* sm2私钥解密
|
||||
*
|
||||
* @param data 待加密数据
|
||||
* @param data 待解密数据
|
||||
* @param privateKey 私钥
|
||||
* @return 解密后字符串
|
||||
*/
|
||||
@ -266,7 +268,7 @@ public class EncryptUtils {
|
||||
/**
|
||||
* rsa私钥解密
|
||||
*
|
||||
* @param data 待加密数据
|
||||
* @param data 待解密数据
|
||||
* @param privateKey 私钥
|
||||
* @return 解密后字符串
|
||||
*/
|
||||
|
||||
@ -100,7 +100,7 @@ public class LogAspect {
|
||||
|
||||
if (e != null) {
|
||||
operLog.setStatus(BusinessStatus.FAIL.ordinal());
|
||||
operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 2000));
|
||||
operLog.setErrorMsg(StringUtils.substring(e.getMessage(), 0, 5000));
|
||||
}
|
||||
// 设置方法名称
|
||||
String className = joinPoint.getTarget().getClass().getName();
|
||||
@ -146,7 +146,7 @@ public class LogAspect {
|
||||
}
|
||||
// 是否需要保存response,参数和值
|
||||
if (log.isSaveResponseData() && ObjectUtil.isNotNull(jsonResult)) {
|
||||
operLog.setJsonResult(StringUtils.substring(JsonUtils.toJsonString(jsonResult), 0, 2000));
|
||||
operLog.setJsonResult(StringUtils.substring(JsonUtils.toJsonString(jsonResult), 0, 5000));
|
||||
}
|
||||
}
|
||||
|
||||
@ -161,11 +161,11 @@ public class LogAspect {
|
||||
String requestMethod = operLog.getRequestMethod();
|
||||
if (MapUtil.isEmpty(paramsMap) && StringUtils.equalsAny(requestMethod, HttpMethod.PUT.name(), HttpMethod.POST.name(), HttpMethod.DELETE.name())) {
|
||||
String params = argsArrayToString(joinPoint.getArgs(), excludeParamNames);
|
||||
operLog.setOperParam(StringUtils.substring(params, 0, 2000));
|
||||
operLog.setOperParam(StringUtils.substring(params, 0, 5000));
|
||||
} else {
|
||||
MapUtil.removeAny(paramsMap, EXCLUDE_PROPERTIES);
|
||||
MapUtil.removeAny(paramsMap, excludeParamNames);
|
||||
operLog.setOperParam(StringUtils.substring(JsonUtils.toJsonString(paramsMap), 0, 2000));
|
||||
operLog.setOperParam(StringUtils.substring(JsonUtils.toJsonString(paramsMap), 0, 5000));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -138,6 +138,8 @@ public class PlusDataPermissionHandler {
|
||||
if (StringUtils.isNotBlank(dataColumn.permission()) &&
|
||||
CollUtil.contains(user.getMenuPermission(), dataColumn.permission())
|
||||
) {
|
||||
// 修复多角色与权限标识符共用问题 https://gitee.com/dromara/RuoYi-Vue-Plus/issues/IB4CS4
|
||||
conditions.add(joinStr + " 1 = 1 ");
|
||||
isSuccess = true;
|
||||
continue;
|
||||
}
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
package org.dromara.common.web.config;
|
||||
|
||||
import io.undertow.server.DefaultByteBufferPool;
|
||||
import io.undertow.server.handlers.DisallowedMethodsHandler;
|
||||
import io.undertow.util.HttpString;
|
||||
import io.undertow.websockets.jsr.WebSocketDeploymentInfo;
|
||||
import org.dromara.common.core.utils.SpringUtils;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
@ -16,18 +18,45 @@ import org.springframework.core.task.VirtualThreadTaskExecutor;
|
||||
@AutoConfiguration
|
||||
public class UndertowConfig implements WebServerFactoryCustomizer<UndertowServletWebServerFactory> {
|
||||
|
||||
/**
|
||||
* 自定义 Undertow 配置
|
||||
* <p>
|
||||
* 主要配置内容包括:
|
||||
* 1. 配置 WebSocket 部署信息
|
||||
* 2. 在虚拟线程模式下使用虚拟线程池
|
||||
* 3. 禁用不安全的 HTTP 方法,如 CONNECT、TRACE、TRACK
|
||||
* </p>
|
||||
*
|
||||
* @param factory Undertow 的 Web 服务器工厂
|
||||
*/
|
||||
@Override
|
||||
public void customize(UndertowServletWebServerFactory factory) {
|
||||
factory.addDeploymentInfoCustomizers(deploymentInfo -> {
|
||||
// 配置 WebSocket 部署信息,设置 WebSocket 使用的缓冲区池
|
||||
WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo();
|
||||
webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(true, 1024));
|
||||
deploymentInfo.addServletContextAttribute("io.undertow.websockets.jsr.WebSocketDeploymentInfo", webSocketDeploymentInfo);
|
||||
// 使用虚拟线程
|
||||
|
||||
// 如果启用了虚拟线程,配置 Undertow 使用虚拟线程池
|
||||
if (SpringUtils.isVirtual()) {
|
||||
// 创建虚拟线程池,线程池前缀为 "undertow-"
|
||||
VirtualThreadTaskExecutor executor = new VirtualThreadTaskExecutor("undertow-");
|
||||
// 设置虚拟线程池为执行器和异步执行器
|
||||
deploymentInfo.setExecutor(executor);
|
||||
deploymentInfo.setAsyncExecutor(executor);
|
||||
}
|
||||
|
||||
// 配置禁止某些不安全的 HTTP 方法(如 CONNECT、TRACE、TRACK)
|
||||
deploymentInfo.addInitialHandlerChainWrapper(handler -> {
|
||||
// 禁止三个方法 CONNECT/TRACE/TRACK 也是不安全的 避免爬虫骚扰
|
||||
HttpString[] disallowedHttpMethods = {
|
||||
HttpString.tryFromString("CONNECT"),
|
||||
HttpString.tryFromString("TRACE"),
|
||||
HttpString.tryFromString("TRACK")
|
||||
};
|
||||
// 使用 DisallowedMethodsHandler 拦截并拒绝这些方法的请求
|
||||
return new DisallowedMethodsHandler(handler, disallowedHttpMethods);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@ -1,19 +1,22 @@
|
||||
package org.dromara.common.web.filter;
|
||||
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.map.MapUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HtmlUtil;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
|
||||
import jakarta.servlet.ReadListener;
|
||||
import jakarta.servlet.ServletInputStream;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletRequestWrapper;
|
||||
import org.dromara.common.core.utils.StringUtils;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.MediaType;
|
||||
|
||||
import java.io.ByteArrayInputStream;
|
||||
import java.io.IOException;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@ -32,16 +35,22 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
|
||||
@Override
|
||||
public String getParameter(String name) {
|
||||
String value = super.getParameter(name);
|
||||
if (value != null) {
|
||||
return HtmlUtil.cleanHtmlTag(value).trim();
|
||||
if (value == null) {
|
||||
return null;
|
||||
}
|
||||
return value;
|
||||
return HtmlUtil.cleanHtmlTag(value).trim();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String[]> getParameterMap() {
|
||||
Map<String, String[]> valueMap = super.getParameterMap();
|
||||
for (Map.Entry<String, String[]> entry : valueMap.entrySet()) {
|
||||
if (MapUtil.isEmpty(valueMap)) {
|
||||
return valueMap;
|
||||
}
|
||||
// 避免某些容器不允许改参数的情况 copy一份重新改
|
||||
Map<String, String[]> map = new HashMap<>(valueMap.size());
|
||||
map.putAll(valueMap);
|
||||
for (Map.Entry<String, String[]> entry : map.entrySet()) {
|
||||
String[] values = entry.getValue();
|
||||
if (values != null) {
|
||||
int length = values.length;
|
||||
@ -50,25 +59,25 @@ public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
|
||||
// 防xss攻击和过滤前后空格
|
||||
escapseValues[i] = HtmlUtil.cleanHtmlTag(values[i]).trim();
|
||||
}
|
||||
valueMap.put(entry.getKey(), escapseValues);
|
||||
map.put(entry.getKey(), escapseValues);
|
||||
}
|
||||
}
|
||||
return valueMap;
|
||||
return map;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getParameterValues(String name) {
|
||||
String[] values = super.getParameterValues(name);
|
||||
if (values != null) {
|
||||
int length = values.length;
|
||||
String[] escapseValues = new String[length];
|
||||
for (int i = 0; i < length; i++) {
|
||||
// 防xss攻击和过滤前后空格
|
||||
escapseValues[i] = HtmlUtil.cleanHtmlTag(values[i]).trim();
|
||||
}
|
||||
return escapseValues;
|
||||
if (ArrayUtil.isEmpty(values)) {
|
||||
return values;
|
||||
}
|
||||
return values;
|
||||
int length = values.length;
|
||||
String[] escapseValues = new String[length];
|
||||
for (int i = 0; i < length; i++) {
|
||||
// 防xss攻击和过滤前后空格
|
||||
escapseValues[i] = HtmlUtil.cleanHtmlTag(values[i]).trim();
|
||||
}
|
||||
return escapseValues;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
|
||||
FROM bellsoft/liberica-openjdk-debian:17.0.11-cds
|
||||
#FROM bellsoft/liberica-openjdk-debian:21.0.3-cds
|
||||
#FROM bellsoft/liberica-openjdk-debian:21.0.5-cds
|
||||
#FROM findepi/graalvm:java17-native
|
||||
|
||||
LABEL maintainer="Lion Li"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
|
||||
FROM bellsoft/liberica-openjdk-debian:17.0.11-cds
|
||||
#FROM bellsoft/liberica-openjdk-debian:21.0.3-cds
|
||||
#FROM bellsoft/liberica-openjdk-debian:21.0.5-cds
|
||||
#FROM findepi/graalvm:java17-native
|
||||
|
||||
LABEL maintainer="Lion Li"
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
# 此镜像仅用于测试 正式环境需自行安装数据库
|
||||
# SID: XE user: system password: oracle
|
||||
|
||||
@ -1,5 +1,3 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: mysql:8.0.33
|
||||
|
||||
@ -738,10 +738,10 @@ create table sys_oper_log (
|
||||
oper_url varchar2(255) default '',
|
||||
oper_ip varchar2(128) default '',
|
||||
oper_location varchar2(255) default '',
|
||||
oper_param varchar2(2100) default '',
|
||||
json_result varchar2(2100) default '',
|
||||
oper_param varchar2(5500) default '',
|
||||
json_result varchar2(5500) default '',
|
||||
status number(1) default 0,
|
||||
error_msg varchar2(2100) default '',
|
||||
error_msg varchar2(5500) default '',
|
||||
oper_time date,
|
||||
cost_time number(20) default 0
|
||||
);
|
||||
|
||||
@ -741,10 +741,10 @@ create table if not exists sys_oper_log
|
||||
oper_url varchar(255) default ''::varchar,
|
||||
oper_ip varchar(128) default ''::varchar,
|
||||
oper_location varchar(255) default ''::varchar,
|
||||
oper_param varchar(2000) default ''::varchar,
|
||||
json_result varchar(2000) default ''::varchar,
|
||||
oper_param varchar(5000) default ''::varchar,
|
||||
json_result varchar(5000) default ''::varchar,
|
||||
status int4 default 0,
|
||||
error_msg varchar(2000) default ''::varchar,
|
||||
error_msg varchar(5000) default ''::varchar,
|
||||
oper_time timestamp,
|
||||
cost_time int8 default 0,
|
||||
constraint sys_oper_log_pk primary key (oper_id)
|
||||
|
||||
@ -554,10 +554,10 @@ create table sys_oper_log (
|
||||
oper_url varchar(255) default '' comment '请求URL',
|
||||
oper_ip varchar(128) default '' comment '主机地址',
|
||||
oper_location varchar(255) default '' comment '操作地点',
|
||||
oper_param varchar(2000) default '' comment '请求参数',
|
||||
json_result varchar(2000) default '' comment '返回参数',
|
||||
oper_param varchar(5000) default '' comment '请求参数',
|
||||
json_result varchar(5000) default '' comment '返回参数',
|
||||
status int(1) default 0 comment '操作状态(0正常 1异常)',
|
||||
error_msg varchar(2000) default '' comment '错误消息',
|
||||
error_msg varchar(5000) default '' comment '错误消息',
|
||||
oper_time datetime comment '操作时间',
|
||||
cost_time bigint(20) default 0 comment '消耗时间',
|
||||
primary key (oper_id),
|
||||
|
||||
@ -2002,10 +2002,10 @@ CREATE TABLE sys_oper_log
|
||||
oper_url nvarchar(255) DEFAULT '' NULL,
|
||||
oper_ip nvarchar(128) DEFAULT '' NULL,
|
||||
oper_location nvarchar(255) DEFAULT '' NULL,
|
||||
oper_param nvarchar(2000) DEFAULT '' NULL,
|
||||
json_result nvarchar(2000) DEFAULT '' NULL,
|
||||
oper_param nvarchar(5000) DEFAULT '' NULL,
|
||||
json_result nvarchar(5000) DEFAULT '' NULL,
|
||||
status int DEFAULT ((0)) NULL,
|
||||
error_msg nvarchar(2000) DEFAULT '' NULL,
|
||||
error_msg nvarchar(5000) DEFAULT '' NULL,
|
||||
oper_time datetime2(7) NULL,
|
||||
cost_time bigint DEFAULT ((0)) NULL,
|
||||
CONSTRAINT PK__sys_oper__34723BF9BD954573 PRIMARY KEY CLUSTERED (oper_id)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user