Compare commits
29 Commits
v5.13.0.sp
...
v5.13.1.sp
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3d0455192c | ||
|
|
1c51398e60 | ||
|
|
20ff2cebfe | ||
|
|
d714d70b69 | ||
|
|
23c65b6e8e | ||
|
|
bfe0f7536d | ||
|
|
cb4640cbb7 | ||
|
|
23ea3e5020 | ||
|
|
63a6d5c762 | ||
|
|
c06f2e4ff1 | ||
|
|
69011d80a4 | ||
|
|
4a5a279cd5 | ||
|
|
8c749eae52 | ||
|
|
104e59349d | ||
|
|
9a40ab254d | ||
|
|
d409e73324 | ||
|
|
fcf9229849 | ||
|
|
a4ff87a6c1 | ||
|
|
6267e3c74e | ||
|
|
26563cd80a | ||
|
|
c74d5823dc | ||
|
|
4ff2e23780 | ||
|
|
1e156116ee | ||
|
|
cd07b1a3c8 | ||
|
|
c47be09f51 | ||
|
|
ed8e08da05 | ||
|
|
2ab09e38e5 | ||
|
|
4a881825e9 | ||
|
|
35b0411198 |
35
README.md
35
README.md
@@ -101,7 +101,7 @@
|
||||
* 持久层:Apache MyBatis 3.5、Hibernate Validator 8、Alibaba Druid 1.2
|
||||
* 分离版:Node.js、TypeScript、Vue3、Vite、Ant Design Vue、Vue Vben Admin
|
||||
* 经典版:Beetl 3.10(HTML)、jQuery 3.7、Bootstrap 3.3、AdminLTE 2.4
|
||||
* 分离版:支持所有现代浏览器,如:谷歌 Chrome 86+、微软 Edge、火狐、国产浏览器 等
|
||||
* 分离版:支持所有现代浏览器,如:谷歌 Chrome 87+、微软 Edge、火狐、国产浏览器 等
|
||||
* 经典版:支持 IE10 和以上版本,以及其他所有现代浏览器,如:谷歌、火狐、国产浏览器 等
|
||||
* 工作流引擎:Flowable 7.1、符合 BPMN 规范、在线流程设计器、中国式流程、退回、撤回、自由流
|
||||
* 技术选型(详细)已支持数据库:<http://jeesite.com/docs/technology/>
|
||||
@@ -140,6 +140,17 @@
|
||||
1. 分离版地址:<https://vue.jeesite.com>
|
||||
2. 经典版地址:<https://demo.jeesite.com>
|
||||
|
||||
### 快速运行
|
||||
|
||||
1. 免安装数据库,使用内嵌 H2 DB、包含 Vue 和 全栈双版本
|
||||
2. 环境准备:`JDK 17 或更高版本`、`Maven 3.8+`、无需准备数据库
|
||||
3. 下载源码:<https://gitee.com/thinkgem/jeesite5/repository/archive/v5.springboot3.zip> 并解压
|
||||
4. 执行脚本:`/web-fast/bin/run-tomcat.bat(sh)` 启动服务即可(无需手动建库,自动初始化数据库)
|
||||
5. Vue分离版本地址:<http://127.0.0.1:8980/vue/login>
|
||||
6. 全栈版本地址:<http://127.0.0.1:8980/a/login>
|
||||
7. 初始登录账号:超级管理员:system 密码:admin
|
||||
8. 部署常见问题:<https://jeesite.com/docs/faq/>
|
||||
|
||||
### 本地运行
|
||||
|
||||
1. 环境准备:`JDK 17+`、`Maven 3.8+`、使用 `MySQL 8.0+` 数据库、[其它数据库](https://jeesite.com/docs/technology/#_8、已支持数据库)
|
||||
@@ -152,27 +163,21 @@
|
||||
8. 分离端安装:<https://jeesite.com/docs/vue-install-deploy/>
|
||||
9. 分离端常见问题:<https://jeesite.com/docs/vue-faq/>
|
||||
|
||||
### 快速运行
|
||||
|
||||
1. 环境准备:`JDK 17+`、`Maven 3.8+`、无需准备数据库(使用内嵌 H2 DB、包含 Vue 和 全栈双版本)
|
||||
2. 下载源码:<https://gitee.com/thinkgem/jeesite5/repository/archive/v5.springboot3.zip> 并解压
|
||||
3. 执行脚本:`/web-fast/bin/run-tomcat.bat(sh)` 启动服务即可(无需手动建库,自动初始化数据库)
|
||||
4. Vue分离版本地址:<http://127.0.0.1:8980/vue/login>
|
||||
5. 全栈版本地址:<http://127.0.0.1:8980/a/login>
|
||||
6. 初始登录账号:超级管理员:system 密码:admin
|
||||
7. 部署常见问题:<https://jeesite.com/docs/faq/>
|
||||
|
||||
### 容器运行
|
||||
|
||||
- 拉取 Docker 镜像(JeeSite版本不是最新):
|
||||
```sh
|
||||
docker pull thinkgem/jeesite-web
|
||||
docker pull crpi-u3zm0t8trv68xpyx.cn-qingdao.personal.cr.aliyuncs.com/thinkgem/jeesite:latest
|
||||
```
|
||||
- 启动脚本:
|
||||
- 启动镜像:
|
||||
```sh
|
||||
docker run --name jeesite-web -p 8980:8980 -d --restart unless-stopped \
|
||||
-v ~/:/data thinkgem/jeesite-web && docker logs -f jeesite-web
|
||||
docker run --name js5 -p 8980:8980 -d crpi-u3zm0t8trv68xpyx.cn-qingdao.personal.cr.aliyuncs.com/thinkgem/jeesite:latest
|
||||
```
|
||||
- 查看日志:
|
||||
```sh
|
||||
docker logs -f js5
|
||||
```
|
||||
|
||||
- 浏览器访问:<http://127.0.0.1:8980/js/> 账号 system 密码 admin
|
||||
|
||||
### 开发环境
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -64,8 +64,11 @@ public class PropertiesUtils {
|
||||
// 获取全局设置默认的配置文件(以下是支持环境配置的属性文件)
|
||||
Set<String> set = SetUtils.newLinkedHashSet();
|
||||
set.addAll(Arrays.asList(DEFAULT_CONFIG_FILE));
|
||||
// 获取 spring.config.location 外部自定义的配置文件
|
||||
// 获取 spring.config.location、spring.config.additional-location 外部自定义的配置文件
|
||||
String customConfigs = System.getProperty("spring.config.location");
|
||||
if (StringUtils.isBlank(customConfigs)){
|
||||
customConfigs = System.getProperty("spring.config.additional-location");
|
||||
}
|
||||
if (StringUtils.isNotBlank(customConfigs)){
|
||||
for (String customConfig : StringUtils.splitComma(customConfigs)){
|
||||
if (!customConfig.contains("$")){
|
||||
|
||||
@@ -270,7 +270,7 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
|
||||
}
|
||||
|
||||
/**
|
||||
* 驼峰命名法工具
|
||||
* 转换为驼峰命名法
|
||||
* @return
|
||||
* camelCase("hello_world") == "helloWorld"
|
||||
* capCamelCase("hello_world") == "HelloWorld"
|
||||
@@ -283,37 +283,35 @@ public class StringUtils extends org.apache.commons.lang3.StringUtils {
|
||||
s = s.toLowerCase();
|
||||
StringBuilder sb = new StringBuilder(s.length());
|
||||
boolean upperCase = false;
|
||||
for (int i = 0; i < s.length(); i++) {
|
||||
for (int i = 0, j = 0; i < s.length(); i++) {
|
||||
char c = s.charAt(i);
|
||||
if (c == UNDERLINE.charAt(0) || c == MINUS.charAt(0)) {
|
||||
upperCase = i != 1; // 不允许第二个字符是大写
|
||||
upperCase = j > 1; // 不允许第二个字符是大写
|
||||
} else if (upperCase) {
|
||||
sb.append(Character.toUpperCase(c));
|
||||
upperCase = false;
|
||||
j++;
|
||||
} else {
|
||||
sb.append(c);
|
||||
j++;
|
||||
}
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
* 驼峰命名法工具
|
||||
* 转换为驼峰命名法(首字母大写)
|
||||
* @return
|
||||
* camelCase("hello_world") == "helloWorld"
|
||||
* capCamelCase("hello_world") == "HelloWorld"
|
||||
* uncamelCase("helloWorld") = "hello_world"
|
||||
*/
|
||||
public static String capCamelCase(String s) {
|
||||
if (s == null) {
|
||||
return null;
|
||||
}
|
||||
s = camelCase(s);
|
||||
return s.substring(0, 1).toUpperCase() + s.substring(1);
|
||||
return cap(camelCase(s));
|
||||
}
|
||||
|
||||
/**
|
||||
* 驼峰命名法工具
|
||||
* 取消驼峰命名发
|
||||
* @return
|
||||
* camelCase("hello_world") == "helloWorld"
|
||||
* capCamelCase("hello_world") == "HelloWorld"
|
||||
|
||||
@@ -305,7 +305,7 @@ public class ExcelImport implements Closeable {
|
||||
if (DateUtil.isCellDateFormatted(cell)) {
|
||||
val = DateUtil.getJavaDate((Double) val); // POI Excel 日期格式转换
|
||||
}else{
|
||||
if ((Double) val % 1 > 0){
|
||||
if (Math.abs((double)val % 1) > 1E-10){
|
||||
val = new DecimalFormat("0.00").format(val);
|
||||
}else{
|
||||
val = new DecimalFormat("0").format(val);
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
/*! Respond.js v1.4.2: min/max-width media query polyfill Copyright 2014 Scott Jehl Licensed under MIT http://j.mp/respondjs */
|
||||
//https://oss.maxcdn.com/respond/1.4.2/respond.min.js
|
||||
!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='­<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){v(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},g=function(a){return a.replace(c.regex.minmaxwh,"").match(c.regex.other)};if(c.ajax=f,c.queue=d,c.unsupportedmq=g,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,comments:/\/\*[^*]*\*+([^/][^*]*\*+)*\//gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\(\s*min\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,maxw:/\(\s*max\-width\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/,minmaxwh:/\(\s*m(in|ax)\-(height|width)\s*:\s*(\s*[0-9\.]+)(px|em)\s*\)/gi,other:/\([^\)]*\)/g},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var h,i,j,k=a.document,l=k.documentElement,m=[],n=[],o=[],p={},q=30,r=k.getElementsByTagName("head")[0]||l,s=k.getElementsByTagName("base")[0],t=r.getElementsByTagName("link"),u=function(){var a,b=k.createElement("div"),c=k.body,d=l.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=k.createElement("body"),c.style.background="none"),l.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&l.insertBefore(c,l.firstChild),a=b.offsetWidth,f?l.removeChild(c):c.removeChild(b),l.style.fontSize=d,e&&(c.style.fontSize=e),a=j=parseFloat(a)},v=function(b){var c="clientWidth",d=l[c],e="CSS1Compat"===k.compatMode&&d||k.body[c]||d,f={},g=t[t.length-1],p=(new Date).getTime();if(b&&h&&q>p-h)return a.clearTimeout(i),i=a.setTimeout(v,q),void 0;h=p;for(var s in m)if(m.hasOwnProperty(s)){var w=m[s],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?j||u():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?j||u():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(n[w.rules]))}for(var C in o)o.hasOwnProperty(C)&&o[C]&&o[C].parentNode===r&&r.removeChild(o[C]);o.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=k.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,r.insertBefore(E,g.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(k.createTextNode(F)),o.push(E)}},w=function(a,b,d){var e=a.replace(c.regex.comments,"").replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},i=!f&&d;b.length&&(b+="/"),i&&(f=1);for(var j=0;f>j;j++){var k,l,o,p;i?(k=d,n.push(h(a))):(k=e[j].match(c.regex.findStyles)&&RegExp.$1,n.push(RegExp.$2&&h(RegExp.$2))),o=k.split(","),p=o.length;for(var q=0;p>q;q++)l=o[q],g(l)||m.push({media:l.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:n.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}v()},x=function(){if(d.length){var b=d.shift();f(b.href,function(c){w(c,b.href,b.media),p[b.href]=!0,a.setTimeout(function(){x()},0)})}},y=function(){for(var b=0;b<t.length;b++){var c=t[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!p[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(w(c.styleSheet.rawCssText,e,f),p[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!s||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}x()};y(),c.update=y,c.getEmValue=u,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);
|
||||
|
||||
/*! @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed */
|
||||
//https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js
|
||||
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);
|
||||
@@ -16,8 +16,8 @@ span{display:block;font-size:12px;line-height:12px;}
|
||||
.clean{clear:both;}
|
||||
</style></head><body>
|
||||
<h1>浏览器版本过低,是时候升级您的浏览器了</h1>
|
||||
<p>本系统 <a href="http://jeesite.com">JeeSite</a> 支持 IE9 及以上版本及其他所有现代浏览器,如:谷歌浏览器、火狐浏览器、国产浏览器 等。</p>
|
||||
<p>您正在使用 Internet Explorer 的过期版本(IE6、IE7、IE8 内核的浏览器)。这意味着在升级浏览器前,您将无法继续访问。</p>
|
||||
<p>本系统 <a href="http://jeesite.com">JeeSite</a> 支持 IE10 及以上版本及其他所有现代浏览器,如:谷歌浏览器、火狐浏览器、国产浏览器 等。</p>
|
||||
<p>您正在使用 Internet Explorer 的过期版本(IE6、IE7、IE8、IE9 内核的浏览器)。这意味着在升级浏览器前,您将无法继续访问。</p>
|
||||
<hr>
|
||||
<h2>为什么会出现这个页面?</h2>
|
||||
<p>如果您不知道升级浏览器是什么意思,请请教一些熟练电脑操作的朋友。如果您使用的不是Internet Explorer,而是360、QQ、搜狗等,双核浏览器,出现这个页面可能是您切换到了兼容模式,请<strong style="color:#f00;">切换到极速模式</strong>下,如果还不行请升级至最新版浏览器。</p>
|
||||
@@ -29,10 +29,10 @@ span{display:block;font-size:12px;line-height:12px;}
|
||||
<h2>您可以选择更先进的浏览器</h2>
|
||||
<p>推荐使用以下浏览器的最新版本。如果您的电脑已有以下浏览器的最新版本则直接使用该浏览器访问 <b id="url"></b>即可。</p>
|
||||
<div class="browser"><ul>
|
||||
<li><img src="img/chrome360.jpg"><a href="http://chrome.360.cn/"> 360极速浏览器<span>360 Chrome</span></a></li>
|
||||
<li><img src="img/chrome.jpg"><a href="http://www.google.cn/intl/zh-CN/chrome/browser/desktop/index.html"> 谷歌浏览器<span>Google Chrome</span></a></li>
|
||||
<li><img src="img/firefox.jpg"><a href="http://www.firefox.com.cn/download/"> 火狐浏览器<span>Mozilla Firefox</span></a></li>
|
||||
<li><img src="img/edge.png"><a href="https://www.microsoft.com/zh-cn/edge"> Edge 浏览器<span>Microsoft Edge</span></a></li>
|
||||
<li><img src="img/chrome.jpg"><a href="http://www.google.cn/intl/zh-CN/chrome/browser/desktop/index.html"> 谷歌浏览器<span>Google Chrome</span></a></li>
|
||||
<li><img src="img/chrome360.jpg"><a href="http://chrome.360.cn/"> 360极速浏览器<span>360 Chrome</span></a></li>
|
||||
<li><img src="img/firefox.jpg"><a href="https://www.firefox.com/zh-CN/"> 火狐浏览器<span>Mozilla Firefox</span></a></li>
|
||||
</ul><div class="clean"></div></div>
|
||||
<hr><br/>
|
||||
<script>
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
*/
|
||||
package com.jeesite.test.lang;
|
||||
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
|
||||
import java.text.ParseException;
|
||||
|
||||
/**
|
||||
* 字符串工具测试类
|
||||
* @author ThinkGem
|
||||
* @version 2025-09-18
|
||||
*/
|
||||
public class StringUtilsTest {
|
||||
|
||||
public static void main(String[] args) throws ParseException {
|
||||
System.out.println(StringUtils.camelCase("id_name") + " = idName");
|
||||
System.out.println(StringUtils.camelCase("_id_name") + " = idName");
|
||||
System.out.println(StringUtils.camelCase("__id_name") + " = idName");
|
||||
System.out.println(StringUtils.camelCase("a_id") + " = aid");
|
||||
System.out.println(StringUtils.camelCase("a_b_id") + " = abId");
|
||||
System.out.println(StringUtils.camelCase("__a_id") + " = aid");
|
||||
System.out.println(StringUtils.camelCase("__a_b_id") + " = abId");
|
||||
System.out.println(StringUtils.capCamelCase("id_name") + " = IdName");
|
||||
System.out.println(StringUtils.capCamelCase("a_b_id_name") + " = AbIdName");
|
||||
System.out.println(StringUtils.uncamelCase("abIdName") + " = ab_id_name");
|
||||
System.out.println(StringUtils.uncamelCase("AbIdName") + " = ab_id_name");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -29,4 +29,5 @@
|
||||
5.11.1
|
||||
5.12.0
|
||||
5.12.1
|
||||
5.13.0
|
||||
5.13.0
|
||||
5.13.1
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -1,16 +1,7 @@
|
||||
|
||||
# 产品或项目名称、软件开发公司名称
|
||||
productName: JeeSite Demo
|
||||
companyName: ThinkGem
|
||||
|
||||
# 产品版本、版权年份
|
||||
productVersion: V5.13
|
||||
copyrightYear: 2025
|
||||
|
||||
|
||||
# 数据库连接
|
||||
jdbc:
|
||||
|
||||
jdbc:
|
||||
|
||||
# Mysql 数据库配置
|
||||
type: mysql
|
||||
driver: com.mysql.cj.jdbc.Driver
|
||||
@@ -18,11 +9,7 @@ jdbc:
|
||||
username: root
|
||||
password: 123456
|
||||
testSql: SELECT 1
|
||||
|
||||
|
||||
# 日志配置
|
||||
logging:
|
||||
config: classpath:logback-test.xml
|
||||
|
||||
# 消息推送
|
||||
msg:
|
||||
enabled: true
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -37,4 +37,5 @@
|
||||
5.11.1
|
||||
5.12.0
|
||||
5.12.1
|
||||
5.13.0
|
||||
5.13.0
|
||||
5.13.1
|
||||
@@ -5,27 +5,6 @@
|
||||
<title>Bootswatch: Cosmo</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="./bootstrap.css" media="screen">
|
||||
<link rel="stylesheet" href="../css/custom.min.css">
|
||||
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="../bower_components/html5shiv/dist/html5shiv.js"></script>
|
||||
<script src="../bower_components/respond/dest/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
<script>
|
||||
|
||||
// var _gaq = _gaq || [];
|
||||
// _gaq.push(['_setAccount', 'UA-23019901-1']);
|
||||
// _gaq.push(['_setDomainName', "bootswatch.com"]);
|
||||
// _gaq.push(['_setAllowLinker', true]);
|
||||
// _gaq.push(['_trackPageview']);
|
||||
|
||||
// (function() {
|
||||
// var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
// ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
// var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
// })();
|
||||
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="navbar navbar-default navbar-fixed-top">
|
||||
@@ -105,9 +84,6 @@
|
||||
<p class="lead">An ode to Metro</p>
|
||||
</div>
|
||||
<div class="col-lg-4 col-md-5 col-sm-6">
|
||||
<div class="sponsor">
|
||||
<script async type="text/javascript" src="//cdn.carbonads.com/carbon.js?zoneid=1673&serve=C6AILKT&placement=bootswatchcom" id="_carbonads_js"></script>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@@ -1287,10 +1263,8 @@
|
||||
|
||||
</footer>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
|
||||
<script src="../js/bootstrap.min.js"></script>
|
||||
<script src="../js/custom.js"></script>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
package com.jeesite.modules.config.web;
|
||||
|
||||
import com.jeesite.common.config.Global;
|
||||
import com.jeesite.common.idgen.IdGen;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
import com.jeesite.common.utils.LocaleUtils;
|
||||
import com.jeesite.common.web.http.ServletUtils;
|
||||
@@ -12,6 +13,7 @@ import jakarta.servlet.Filter;
|
||||
import jakarta.servlet.ServletRequest;
|
||||
import jakarta.servlet.ServletResponse;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -19,21 +21,28 @@ import org.springframework.core.Ordered;
|
||||
import org.springframework.web.servlet.LocaleContextResolver;
|
||||
|
||||
/**
|
||||
* IP地址黑白名单过滤器配置
|
||||
* 全局过滤器:
|
||||
* 1、IP地址黑白名单过滤器配置
|
||||
* 2、本地化时区上下文设置
|
||||
* 3、Slf4j MDC 标识设置
|
||||
*/
|
||||
@Configuration(proxyBeanMethods = false)
|
||||
public class IpAddrFilterConfig {
|
||||
public class GlobalFilterConfig {
|
||||
|
||||
private static final String TRACE_ID = "TRACE_ID";
|
||||
private static long clearCacheTime;
|
||||
private static String[] allowPrefixes;
|
||||
private static String[] denyPrefixes;
|
||||
|
||||
@Bean
|
||||
public FilterRegistrationBean<Filter> ipAddrFilter(LocaleContextResolver localeResolver) {
|
||||
public FilterRegistrationBean<Filter> jeesiteGlobalFilter(LocaleContextResolver localeResolver) {
|
||||
FilterRegistrationBean<Filter> bean = new FilterRegistrationBean<>();
|
||||
bean.setName("ipAddrFilter");
|
||||
bean.setName("jeesiteGlobalFilter");
|
||||
bean.setOrder(Ordered.HIGHEST_PRECEDENCE + 10);
|
||||
bean.setFilter((servletRequest, servletResponse, chain) -> {
|
||||
if (StringUtils.isBlank(MDC.get(TRACE_ID))) {
|
||||
MDC.put(TRACE_ID, IdGen.randomShortString());
|
||||
}
|
||||
if (isAccessAllowed(servletRequest, servletResponse)) {
|
||||
chain.doFilter(servletRequest, servletResponse);
|
||||
} else {
|
||||
@@ -42,6 +51,7 @@ public class IpAddrFilterConfig {
|
||||
ServletUtils.renderString(response, Global.getText("访问拒绝"));
|
||||
}
|
||||
LocaleUtils.removeTimeZoneAwareLocaleContext();
|
||||
MDC.remove(TRACE_ID);
|
||||
});
|
||||
LocaleUtils.setLocaleResolver(localeResolver);
|
||||
bean.addUrlPatterns("/*");
|
||||
@@ -77,9 +87,6 @@ public class IpAddrFilterConfig {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (result) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -4,22 +4,17 @@
|
||||
*/
|
||||
package com.jeesite.modules.sys.interceptor;
|
||||
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
|
||||
import org.slf4j.MDC;
|
||||
import org.springframework.core.NamedThreadLocal;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
import com.jeesite.common.idgen.IdGen;
|
||||
import com.jeesite.common.lang.ByteUtils;
|
||||
import com.jeesite.common.lang.StringUtils;
|
||||
import com.jeesite.common.lang.TimeUtils;
|
||||
import com.jeesite.common.network.IpUtils;
|
||||
import com.jeesite.common.service.BaseService;
|
||||
import com.jeesite.modules.sys.utils.LogUtils;
|
||||
import com.jeesite.modules.sys.utils.UserUtils;
|
||||
import jakarta.servlet.http.HttpServletRequest;
|
||||
import jakarta.servlet.http.HttpServletResponse;
|
||||
import org.springframework.core.NamedThreadLocal;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
|
||||
/**
|
||||
* 日志拦截器
|
||||
@@ -28,16 +23,12 @@ import com.jeesite.modules.sys.utils.UserUtils;
|
||||
*/
|
||||
public class LogInterceptor extends BaseService implements HandlerInterceptor {
|
||||
|
||||
private static final String TRACE_ID = "TRACE_ID";
|
||||
private static final ThreadLocal<Long> startTimeThreadLocal =
|
||||
new NamedThreadLocal<Long>("LogInterceptor StartTime");
|
||||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
|
||||
Object handler) throws Exception {
|
||||
if (StringUtils.isBlank(MDC.get(TRACE_ID))) {
|
||||
MDC.put(TRACE_ID, IdGen.randomShortString());
|
||||
}
|
||||
long beginTime = System.currentTimeMillis();// 1、开始时间
|
||||
startTimeThreadLocal.set(beginTime); // 线程绑定变量(该数据只有当前请求的线程可见)
|
||||
if (logger.isDebugEnabled()){
|
||||
@@ -82,7 +73,6 @@ public class LogInterceptor extends BaseService implements HandlerInterceptor {
|
||||
TimeUtils.formatTime(executeTime), ByteUtils.formatByteSize(totalMemory),
|
||||
ByteUtils.formatByteSize(totalMemory-(totalMemory-runtime.freeMemory())));
|
||||
}
|
||||
MDC.remove(TRACE_ID);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -181,7 +181,7 @@ public class EmpUserServiceSupport extends CrudService<EmpUserDao, EmpUser>
|
||||
EmployeeOffice employeeOfficeWhere = new EmployeeOffice();
|
||||
employeeOfficeWhere.setEmpCode(employee.getEmpCode());
|
||||
employeeOfficeDao.deleteByEntity(employeeOfficeWhere);
|
||||
if (employee.getEmployeeOfficeList().size() > 0){
|
||||
if (!employee.getEmployeeOfficeList().isEmpty()){
|
||||
employee.getEmployeeOfficeList().forEach(employeeOffice -> {
|
||||
employeeOffice.setId(IdGen.nextId());
|
||||
employeeOffice.setEmpCode(employee.getEmpCode());
|
||||
|
||||
@@ -157,14 +157,12 @@ public class OnlineController extends BaseController{
|
||||
onlineTickOutMap = MapUtils.newConcurrentMap();
|
||||
}
|
||||
Object pc = session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY);
|
||||
if (pc != null && pc instanceof PrincipalCollection){
|
||||
if (pc instanceof PrincipalCollection){
|
||||
Object pp = ((PrincipalCollection)pc).getPrimaryPrincipal();
|
||||
if (pp != null) {
|
||||
if (pp instanceof LoginInfo){
|
||||
LoginInfo loginInfo = ((LoginInfo)pp);
|
||||
String key = loginInfo.getId()+"_"+loginInfo.getParam("deviceType", "pc");
|
||||
onlineTickOutMap.put(key, StringUtils.EMPTY);
|
||||
}
|
||||
if (pp instanceof LoginInfo){
|
||||
LoginInfo loginInfo = ((LoginInfo)pp);
|
||||
String key = loginInfo.getId()+"_"+loginInfo.getParam("deviceType", "pc");
|
||||
onlineTickOutMap.put(key, StringUtils.EMPTY);
|
||||
}
|
||||
}
|
||||
SysCacheUtils.put("onlineTickOutMap", onlineTickOutMap);
|
||||
|
||||
@@ -178,6 +178,7 @@ public class EmpUserController extends BaseController {
|
||||
@RequiresPermissions(value={"sys:empUser:edit","sys:empUser:authRole"}, logical=Logical.OR)
|
||||
@PostMapping(value = "save")
|
||||
@ResponseBody
|
||||
//@Idempotent // 幂等示例,默认规则:10秒内,相同的会话和相同的提交内容,会提示“请不要频繁操作”
|
||||
public String save(@Validated EmpUser empUser, @Parameter(description = "操作类型") String op, HttpServletRequest request) {
|
||||
if (!EmpUser.USER_TYPE_EMPLOYEE.equals(empUser.getUserType())){
|
||||
return renderResult(Global.FALSE, "非法操作,不能够操作此用户!");
|
||||
|
||||
@@ -1,5 +1,13 @@
|
||||
# 温馨提示:不建议直接修改此文件,为了平台升级方便,建议将需要修改的参数值,复制到application.yml里进行覆盖该参数值。
|
||||
|
||||
# 产品或项目名称、软件开发公司名称
|
||||
productName: JeeSite Demo
|
||||
companyName: ThinkGem
|
||||
|
||||
# 产品版本、版权年份
|
||||
productVersion: V5.13
|
||||
copyrightYear: 2025
|
||||
|
||||
#======================================#
|
||||
#========== Database sttings ==========#
|
||||
#======================================#
|
||||
@@ -471,8 +479,8 @@ shiro:
|
||||
|
||||
# 记住我密钥设置,你可以通过 com.jeesite.test.RememberMeKeyGen 类快速生成一个秘钥。
|
||||
# 若不设置,则每次启动系统后自动生成一个新秘钥,这样会导致每次重启后,客户端记录的用户信息将失效。
|
||||
rememberMe:
|
||||
secretKey: ~
|
||||
#rememberMe:
|
||||
# secretKey: ~
|
||||
|
||||
# 指定获取客户端IP的Header名称,防止IP伪造。指定为空,则使用原生方法获取IP。
|
||||
remoteAddrHeaderName: X-Forwarded-For
|
||||
|
||||
@@ -5,7 +5,7 @@ sys.login.notLongIn=您的登录信息已过期,请重新登录。
|
||||
sys.login.success=登录成功!
|
||||
sys.login.getInfo=获取信息成功!
|
||||
sys.login.failure=账号或密码错误,请重试。
|
||||
sys.login.error=对不起,系统遇见了点问题,请稍候再试!
|
||||
sys.login.error=对不起,系统遇见了点问题,请稍后再试!
|
||||
sys.logout.success=退出成功!
|
||||
|
||||
# =========== 账号登录相关 ===========
|
||||
|
||||
@@ -257,7 +257,7 @@
|
||||
</gridRowCol>
|
||||
<!-- 模块生成模板分类 -->
|
||||
<moduleTplCategory>
|
||||
<category value="module" label="生成模块代码">
|
||||
<category value="module" label="生成模块代码(Maven)">
|
||||
<template>module/bin/deploy.bat.xml</template>
|
||||
<template>module/bin/deploy.sh.xml</template>
|
||||
<template>module/bin/package.bat.xml</template>
|
||||
@@ -270,6 +270,14 @@
|
||||
<template>module/src/main/resources/application-assistant.xml</template>
|
||||
<template>module/pom.xml</template>
|
||||
</category>
|
||||
<category value="module_vue" label="生成前端模块代码(Vue)">
|
||||
<template>module_vue/api/api.xml</template>
|
||||
<template>module_vue/views/views.xml</template>
|
||||
<template>module_vue/index.ts.xml</template>
|
||||
<template>module_vue/package.json.xml</template>
|
||||
<template>module_vue/README.md.xml</template>
|
||||
<template>module_vue/tsconfig.json.xml</template>
|
||||
</category>
|
||||
<category value="module_cloud" label="生成微服务模块代码(Cloud)">
|
||||
<template>module_cloud/client/bin/deploy.bat.xml</template>
|
||||
<template>module_cloud/client/bin/deploy.sh.xml</template>
|
||||
@@ -301,13 +309,5 @@
|
||||
<template>module_cloud/web/pom.xml</template>
|
||||
<template>module_cloud/pom.xml</template>
|
||||
</category>
|
||||
<category value="module_vue" label="生成前端模块代码(Vue)">
|
||||
<template>module_vue/api/api.xml</template>
|
||||
<template>module_vue/views/views.xml</template>
|
||||
<template>module_vue/index.ts.xml</template>
|
||||
<template>module_vue/package.json.xml</template>
|
||||
<template>module_vue/README.md.xml</template>
|
||||
<template>module_vue/tsconfig.json.xml</template>
|
||||
</category>
|
||||
</moduleTplCategory>
|
||||
</config>
|
||||
@@ -80,7 +80,7 @@
|
||||
function onUploadProgress(progressEvent: AxiosProgressEvent) {
|
||||
const complete = ((progressEvent.loaded / (progressEvent.total || 1)) * 100) | 0;
|
||||
if (complete != 100) {
|
||||
uploadInfo.value = t('正在导入,请稍后') + ' ' + complete + '%...';
|
||||
uploadInfo.value = t('正在导入,请稍候') + ' ' + complete + '%...';
|
||||
} else {
|
||||
uploadInfo.value = '';
|
||||
}
|
||||
|
||||
@@ -94,7 +94,7 @@ if(table.isTreeEntity){
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" setup name="${compNamePrefix}List">
|
||||
import { onMounted<% if(toBoolean(table.optionMap['isImportExport'])){ %>, ref<% } %>, unref<% if(table.isTreeEntity || isNotBlank(table.optionMap['leftTreeRightTableFk'])){ %>, watch<% }
|
||||
import { onMounted, ref, unref<% if(table.isTreeEntity || isNotBlank(table.optionMap['leftTreeRightTableFk'])){ %>, watch<% }
|
||||
%><% if(table.isTreeEntity){ %>, nextTick<% } %> } from 'vue';
|
||||
<% if(@StringUtils.contains(table.tplCategory, '_route')) { %>
|
||||
import { useEmitter } from '@jeesite/core/store/modules/user';
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
<script src="${ctxPath}/global.min.js?ctx=${ctx}"></script>
|
||||
<script src="${ctxStatic}/jquery/jquery-3.7.0.min.js"></script>
|
||||
<script src="${ctxStatic}/jquery/jquery-migrate-3.4.0.min.js"></script>
|
||||
<!--[if lt IE 9]><script src="${ctxStatic}/common/h5fix.min.js"></script><![endif]-->
|
||||
<% if(parameter.__layer! == 'true'){ if(parameter.__layer_title! == 'false'){ %>
|
||||
<style>.main-content>.box-main>.box-header{padding-right:45px;}</style>
|
||||
<% }else{ %>
|
||||
|
||||
@@ -67,8 +67,8 @@
|
||||
<span class="required hide">*</span> ${text('电子邮箱')}:<i class="fa icon-question hide"></i></label>
|
||||
<div class="col-sm-8">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon"><i class="fa fa-fw fa-envelope"></i></span>
|
||||
<#form:input path="email" maxlength="300" class="form-control email"/>
|
||||
<span class="input-group-addon"><i class="fa fa-fw fa-envelope"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -79,8 +79,8 @@
|
||||
<span class="required hide">*</span> ${text('手机号码')}:<i class="fa icon-question hide"></i></label>
|
||||
<div class="col-sm-8">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon"><i class="fa fa-fw fa-mobile"></i></span>
|
||||
<#form:input path="mobile" maxlength="100" class="form-control mobile"/>
|
||||
<span class="input-group-addon"><i class="fa fa-fw fa-mobile"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -93,8 +93,8 @@
|
||||
<span class="required hide">*</span> ${text('办公电话')}:<i class="fa icon-question hide"></i></label>
|
||||
<div class="col-sm-8">
|
||||
<div class="input-group">
|
||||
<span class="input-group-addon"><i class="fa fa-fw fa-phone"></i></span>
|
||||
<#form:input path="phone" maxlength="100" class="form-control phone"/>
|
||||
<span class="input-group-addon"><i class="fa fa-fw fa-phone"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.jeesite.common.collect.SetUtils;
|
||||
import com.jeesite.common.entity.DataScope;
|
||||
import com.jeesite.common.entity.Page;
|
||||
import com.jeesite.common.idgen.IdGen;
|
||||
import com.jeesite.common.lang.DateUtils;
|
||||
import com.jeesite.common.mybatis.mapper.query.QueryType;
|
||||
import com.jeesite.common.tests.BaseSpringContextTests;
|
||||
import com.jeesite.modules.file.dao.FileUploadDao;
|
||||
@@ -166,6 +167,7 @@ public class DaoMapperTest extends BaseSpringContextTests {
|
||||
company.setCompanyName("a");
|
||||
company.setCreateDate_gte(new Date());
|
||||
company.setCreateDate_lte(new Date());
|
||||
company.setUpdateDate_between("2025-09-11 ~ 2025-09-12");
|
||||
company.setArea(areaList.get(0));
|
||||
company.getArea().setCreateDate_gte(company.getCreateDate_gte());
|
||||
company.getArea().setCreateDate_lte(company.getCreateDate_gte());
|
||||
@@ -302,6 +304,18 @@ public class DaoMapperTest extends BaseSpringContextTests {
|
||||
b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#EQ1}";
|
||||
System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(b, a);
|
||||
|
||||
System.out.println("============ BETWEEN、NOT BETWEEN 测试 ============");
|
||||
Date[] ds = DateUtils.parseDateBetweenString("2025-09-11 ~ 2025-09-12");
|
||||
a = new Post("1").sqlMap().getWhere()
|
||||
.and("create_date", QueryType.BETWEEN, ds)
|
||||
.and("update_date", QueryType.NOT_BETWEEN, ds).toSql();
|
||||
b = "a.`status` != #{STATUS_DELETE} AND a.`post_code` = #{sqlMap.where#post_code#EQ1}" +
|
||||
" AND a.create_date BETWEEN #{sqlMap.where.create_date#BETWEEN1.val[0]}" +
|
||||
" AND #{sqlMap.where.create_date#BETWEEN1.val[1]}" +
|
||||
" AND a.update_date NOT BETWEEN #{sqlMap.where.update_date#NOT_BETWEEN1.val[0]}" +
|
||||
" AND #{sqlMap.where.update_date#NOT_BETWEEN1.val[1]}";
|
||||
System.out.println("a >> "+a);System.out.println("b >> "+b);Assert.assertEquals(b, a);
|
||||
|
||||
System.out.println("============ 带括号测试 ============");
|
||||
a = new Post("1").sqlMap().getWhere()
|
||||
.andBracket("name", QueryType.EQ, "abc", 1)
|
||||
|
||||
@@ -37,7 +37,7 @@ import java.util.List;
|
||||
* @version 2018-5-11
|
||||
*/
|
||||
@ActiveProfiles("test")
|
||||
@SpringBootTest(classes = ApplicationTest.class)
|
||||
@SpringBootTest(classes = ApplicationTest.class, properties = {"msg.enabled=true"})
|
||||
@Rollback(false)
|
||||
public class MsgPushTest extends BaseSpringContextTests {
|
||||
|
||||
|
||||
@@ -1,15 +1,7 @@
|
||||
|
||||
# 产品或项目名称、软件开发公司名称
|
||||
productName: JeeSite Demo
|
||||
companyName: ThinkGem
|
||||
|
||||
# 产品版本、版权年份
|
||||
productVersion: V5.13
|
||||
copyrightYear: 2025
|
||||
|
||||
# 数据库连接
|
||||
jdbc:
|
||||
|
||||
jdbc:
|
||||
|
||||
# Mysql 数据库配置
|
||||
type: mysql
|
||||
driver: com.mysql.cj.jdbc.Driver
|
||||
@@ -17,12 +9,7 @@ jdbc:
|
||||
username: root
|
||||
password: 123456
|
||||
testSql: SELECT 1
|
||||
|
||||
|
||||
# 日志配置
|
||||
logging:
|
||||
config: classpath:logback-test.xml
|
||||
|
||||
# 消息推送
|
||||
msg:
|
||||
enabled: true
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-modules</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>JeeSite Modules</name>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<relativePath>../../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -111,6 +111,9 @@ public class TestDataService extends CrudService<TestDataDao, TestData> {
|
||||
}else{
|
||||
testDataChildDao.delete(testDataChild);
|
||||
}
|
||||
// 保存上传图片
|
||||
FileUploadUtils.saveFileUpload(testDataChild, testDataChild.getId(),
|
||||
"testDataChildList["+index+"].testDataChild_image");
|
||||
// 保存上传附件
|
||||
FileUploadUtils.saveFileUpload(testDataChild, testDataChild.getId(),
|
||||
"testDataChildList["+index+"].testDataChild_file");
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
*/
|
||||
package com.jeesite.test;
|
||||
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
|
||||
/**
|
||||
* JeeSite Web
|
||||
* @author ThinkGem
|
||||
* @version 2018-1-8
|
||||
*/
|
||||
@ActiveProfiles("test")
|
||||
@SpringBootApplication
|
||||
public class ApplicationTest {
|
||||
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(ApplicationTest.class, args);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,7 +6,6 @@ package com.jeesite.test;
|
||||
|
||||
import com.jeesite.common.collect.ListUtils;
|
||||
import com.jeesite.common.tests.BaseSpringContextTests;
|
||||
import com.jeesite.modules.Application;
|
||||
import com.jeesite.modules.test.dao.TestDataDao;
|
||||
import com.jeesite.modules.test.entity.TestData;
|
||||
import org.junit.Test;
|
||||
@@ -22,7 +21,7 @@ import java.util.List;
|
||||
* @version 2019年10月28日
|
||||
*/
|
||||
@ActiveProfiles("test")
|
||||
@SpringBootTest(classes = Application.class)
|
||||
@SpringBootTest(classes = ApplicationTest.class)
|
||||
public class InsertBatchTest extends BaseSpringContextTests {
|
||||
|
||||
@Autowired
|
||||
@@ -4,23 +4,21 @@
|
||||
*/
|
||||
package com.jeesite.test;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
import com.jeesite.common.collect.ListUtils;
|
||||
import com.jeesite.common.idgen.IdGen;
|
||||
import com.jeesite.common.tests.BaseSpringContextTests;
|
||||
import com.jeesite.modules.test.entity.TestData;
|
||||
import com.jeesite.modules.test.entity.TestDataChild;
|
||||
import com.jeesite.modules.test.service.TestDataService;
|
||||
import org.junit.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
import org.springframework.test.context.ActiveProfiles;
|
||||
|
||||
import com.jeesite.common.collect.ListUtils;
|
||||
import com.jeesite.common.idgen.IdGen;
|
||||
import com.jeesite.common.tests.BaseSpringContextTests;
|
||||
import com.jeesite.modules.Application;
|
||||
import com.jeesite.modules.test.entity.TestData;
|
||||
import com.jeesite.modules.test.entity.TestDataChild;
|
||||
import com.jeesite.modules.test.service.TestDataService;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CountDownLatch;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
/**
|
||||
* 多数据源并发测试<br>
|
||||
@@ -31,7 +29,7 @@ import com.jeesite.modules.test.service.TestDataService;
|
||||
* @version 2019-6-26
|
||||
*/
|
||||
@ActiveProfiles("test")
|
||||
@SpringBootTest(classes = Application.class)
|
||||
@SpringBootTest(classes = ApplicationTest.class)
|
||||
public class MultiDataSourceTest extends BaseSpringContextTests {
|
||||
|
||||
@Autowired
|
||||
15
modules/test/src/test/resources/application.yml
Normal file
15
modules/test/src/test/resources/application.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
|
||||
# 数据库连接
|
||||
jdbc:
|
||||
|
||||
# Mysql 数据库配置
|
||||
type: mysql
|
||||
driver: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://127.0.0.1:3306/jeesite_v5?useSSL=false&allowPublicKeyRetrieval=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=CONVERT_TO_NULL&serverTimezone=Asia/Shanghai
|
||||
username: root
|
||||
password: 123456
|
||||
testSql: SELECT 1
|
||||
|
||||
# 日志配置
|
||||
logging:
|
||||
config: classpath:logback-test.xml
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>JeeSite Parent</name>
|
||||
@@ -33,7 +33,7 @@
|
||||
<jmimemagic.version>0.1.5</jmimemagic.version>
|
||||
<zxing.version>3.5.3</zxing.version>
|
||||
|
||||
<poi.version>5.2.3</poi.version>
|
||||
<poi.version>5.4.1</poi.version>
|
||||
<fury.version>0.10.2</fury.version>
|
||||
<bcprov.version>1.78.1</bcprov.version>
|
||||
<pinyin4j.version>2.5.1</pinyin4j.version>
|
||||
@@ -80,7 +80,6 @@
|
||||
<!-- docker setting -->
|
||||
<docker.dockerHost>http://docker.local:2375</docker.dockerHost>
|
||||
<docker.imageName>thinkgem/${project.artifactId}:latest</docker.imageName>
|
||||
<docker.platform>linux/amd64</docker.platform>
|
||||
<docker.run.port>8980:8980</docker.run.port>
|
||||
|
||||
</properties>
|
||||
@@ -356,7 +355,7 @@
|
||||
<plugin>
|
||||
<groupId>io.fabric8</groupId>
|
||||
<artifactId>docker-maven-plugin</artifactId>
|
||||
<version>0.43.4</version>
|
||||
<version>0.46.0</version>
|
||||
<configuration>
|
||||
<dockerHost>${docker.dockerHost}</dockerHost>
|
||||
<verbose>true</verbose>
|
||||
@@ -366,9 +365,6 @@
|
||||
<alias>${project.artifactId}</alias>
|
||||
<build>
|
||||
<dockerFile>${project.basedir}/bin/docker/Dockerfile</dockerFile>
|
||||
<buildOptions>
|
||||
<platform>${docker.platform}</platform>
|
||||
</buildOptions>
|
||||
<assembly>
|
||||
<descriptorRef>artifact</descriptorRef>
|
||||
</assembly>
|
||||
|
||||
2
pom.xml
2
pom.xml
@@ -5,7 +5,7 @@
|
||||
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>JeeSite</name>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-root</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<packaging>pom</packaging>
|
||||
|
||||
<name>JeeSite Root</name>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
<dependency>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-vue-dist</artifactId>
|
||||
<version>5.13.0-SNAPSHOT</version>
|
||||
<version>5.13.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
<!-- 热部署工具
|
||||
|
||||
@@ -32,6 +32,10 @@ server:
|
||||
uri-encoding: UTF-8
|
||||
# 表单请求数据的最大大小
|
||||
max-http-form-post-size: 20MB
|
||||
# # 客户端发送请求参数个数限制
|
||||
# max-parameter-count: 10000
|
||||
# # 文件上传的表单请求参数个数限制
|
||||
# max-part-count: 50
|
||||
# # 进程的最大连接数
|
||||
# max-connections: 8192
|
||||
# # 连接数满后的排队个数
|
||||
@@ -125,8 +129,9 @@ adminPath: /a
|
||||
# 前端基础路径
|
||||
frontPath: /f
|
||||
|
||||
# Vue 资源文件路径,与 VITE_PUBLIC_PATH 一致。
|
||||
# 映射到 src/main/resources/{vuePath} 文件夹
|
||||
# Vue 资源文件访问路径,映射到 src/main/resources/{vuePath} 文件夹
|
||||
# 如果设置的是 /vue,则映射目录为:src/main/resources/vue 文件夹
|
||||
# 该资源映射功能,会自动处理 Vue 的 history 路由模式
|
||||
vuePath: /vue
|
||||
|
||||
# 用户相关
|
||||
|
||||
@@ -44,7 +44,7 @@ set "RUN_JAVA=%JAVA_HOME%\bin\java"
|
||||
goto runJava
|
||||
|
||||
:runJava
|
||||
call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.launch.WarLauncher
|
||||
call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.launch.WarLauncher %*
|
||||
goto end
|
||||
|
||||
:end
|
||||
|
||||
@@ -32,4 +32,4 @@ else
|
||||
RUN_JAVA="$JAVA_HOME"/bin/java
|
||||
fi
|
||||
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.launch.WarLauncher
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.launch.WarLauncher $@
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -32,6 +32,10 @@ server:
|
||||
uri-encoding: UTF-8
|
||||
# 表单请求数据的最大大小
|
||||
max-http-form-post-size: 20MB
|
||||
# # 客户端发送请求参数个数限制
|
||||
# max-parameter-count: 10000
|
||||
# # 文件上传的表单请求参数个数限制
|
||||
# max-part-count: 50
|
||||
# # 进程的最大连接数
|
||||
# max-connections: 8192
|
||||
# # 连接数满后的排队个数
|
||||
|
||||
@@ -44,7 +44,7 @@ set "RUN_JAVA=%JAVA_HOME%\bin\java"
|
||||
goto runJava
|
||||
|
||||
:runJava
|
||||
call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.launch.WarLauncher
|
||||
call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.launch.WarLauncher %*
|
||||
goto end
|
||||
|
||||
:end
|
||||
|
||||
@@ -32,4 +32,4 @@ else
|
||||
RUN_JAVA="$JAVA_HOME"/bin/java
|
||||
fi
|
||||
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.launch.WarLauncher
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.launch.WarLauncher $@
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration debug="false" scan="false">
|
||||
|
||||
<!-- Logger level setting -->
|
||||
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
|
||||
<include resource="config/logger-core.xml"/>
|
||||
|
||||
<!-- Console log output -->
|
||||
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
||||
<root level="WARN">
|
||||
<appender-ref ref="console" />
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
@@ -26,11 +26,11 @@
|
||||
|
||||
<!-- docker setting -->
|
||||
<docker.dockerHost>unix:///var/run/docker.sock</docker.dockerHost>
|
||||
<docker.imageName>thinkgem/jeesite-web:latest</docker.imageName>
|
||||
<!-- <docker.imageName>thinkgem/jeesite-web:amd64</docker.imageName>-->
|
||||
<!-- <docker.platform>linux/amd64</docker.platform>-->
|
||||
<!-- <docker.imageName>thinkgem/jeesite-web:arm64</docker.imageName>-->
|
||||
<!-- <docker.platform>linux/arm64</docker.platform>-->
|
||||
<docker.imageName>thinkgem/jeesite-web-fast:latest</docker.imageName>
|
||||
<!-- <docker.imageName>crpi-u3zm0t8trv68xpyx.cn-qingdao.personal.cr.aliyuncs.com/thinkgem/jeesite:amd64</docker.imageName>-->
|
||||
<!-- <docker.platforms>linux/amd64</docker.platforms>-->
|
||||
<!-- <docker.imageName>crpi-u3zm0t8trv68xpyx.cn-qingdao.personal.cr.aliyuncs.com/thinkgem/jeesite:arm64</docker.imageName>-->
|
||||
<!-- <docker.platforms>linux/arm64</docker.platforms>-->
|
||||
<docker.run.port>8980:8980</docker.run.port>
|
||||
|
||||
</properties>
|
||||
@@ -97,7 +97,7 @@
|
||||
<dependency>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-vue-dist</artifactId>
|
||||
<version>5.13.0-SNAPSHOT</version>
|
||||
<version>5.13.1-SNAPSHOT</version>
|
||||
</dependency>
|
||||
|
||||
</dependencies>
|
||||
@@ -133,6 +133,26 @@
|
||||
<wtpContextName>${finalName}</wtpContextName>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<!-- Docker 插件 https://github.com/fabric8io/docker-maven-plugin - https://dmp.fabric8.io
|
||||
<plugin>
|
||||
<groupId>io.fabric8</groupId>
|
||||
<artifactId>docker-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<images>
|
||||
<image>
|
||||
<build>
|
||||
<buildx>
|
||||
<builderName>maven</builderName>
|
||||
<platforms>
|
||||
<platform>${docker.platforms}</platform>
|
||||
</platforms>
|
||||
</buildx>
|
||||
</build>
|
||||
</image>
|
||||
</images>
|
||||
</configuration>
|
||||
</plugin> -->
|
||||
|
||||
</plugins>
|
||||
</build>
|
||||
|
||||
@@ -32,6 +32,10 @@ server:
|
||||
uri-encoding: UTF-8
|
||||
# 表单请求数据的最大大小
|
||||
max-http-form-post-size: 20MB
|
||||
# # 客户端发送请求参数个数限制
|
||||
# max-parameter-count: 10000
|
||||
# # 文件上传的表单请求参数个数限制
|
||||
# max-part-count: 50
|
||||
# # 进程的最大连接数
|
||||
# max-connections: 8192
|
||||
# # 连接数满后的排队个数
|
||||
@@ -125,8 +129,9 @@ adminPath: /a
|
||||
# 前端基础路径
|
||||
frontPath: /f
|
||||
|
||||
# Vue 资源文件路径,与 VITE_PUBLIC_PATH 一致。
|
||||
# 映射到 src/main/resources/{vuePath} 文件夹
|
||||
# Vue 资源文件访问路径,映射到 src/main/resources/{vuePath} 文件夹
|
||||
# 如果设置的是 /vue,则映射目录为:src/main/resources/vue 文件夹
|
||||
# 该资源映射功能,会自动处理 Vue 的 history 路由模式
|
||||
vuePath: /vue
|
||||
|
||||
# 用户相关
|
||||
|
||||
@@ -44,7 +44,7 @@ set "RUN_JAVA=%JAVA_HOME%\bin\java"
|
||||
goto runJava
|
||||
|
||||
:runJava
|
||||
call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.launch.WarLauncher
|
||||
call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.launch.WarLauncher %*
|
||||
goto end
|
||||
|
||||
:end
|
||||
|
||||
@@ -32,4 +32,4 @@ else
|
||||
RUN_JAVA="$JAVA_HOME"/bin/java
|
||||
fi
|
||||
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.launch.WarLauncher
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.launch.WarLauncher $@
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration debug="false" scan="false">
|
||||
|
||||
<!-- Logger level setting -->
|
||||
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
|
||||
<include resource="config/logger-core.xml"/>
|
||||
|
||||
<!-- Console log output -->
|
||||
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
||||
<root level="WARN">
|
||||
<appender-ref ref="console" />
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -32,6 +32,10 @@ server:
|
||||
uri-encoding: UTF-8
|
||||
# 表单请求数据的最大大小
|
||||
max-http-form-post-size: 20MB
|
||||
# # 客户端发送请求参数个数限制
|
||||
# max-parameter-count: 10000
|
||||
# # 文件上传的表单请求参数个数限制
|
||||
# max-part-count: 50
|
||||
# # 进程的最大连接数
|
||||
# max-connections: 8192
|
||||
# # 连接数满后的排队个数
|
||||
|
||||
@@ -44,7 +44,7 @@ set "RUN_JAVA=%JAVA_HOME%\bin\java"
|
||||
goto runJava
|
||||
|
||||
:runJava
|
||||
call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.launch.WarLauncher
|
||||
call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.launch.WarLauncher %*
|
||||
goto end
|
||||
|
||||
:end
|
||||
|
||||
@@ -32,4 +32,4 @@ else
|
||||
RUN_JAVA="$JAVA_HOME"/bin/java
|
||||
fi
|
||||
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.launch.WarLauncher
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.launch.WarLauncher $@
|
||||
@@ -6,7 +6,7 @@
|
||||
<parent>
|
||||
<groupId>com.jeesite</groupId>
|
||||
<artifactId>jeesite-parent</artifactId>
|
||||
<version>5.13.0.springboot3-SNAPSHOT</version>
|
||||
<version>5.13.1.springboot3-SNAPSHOT</version>
|
||||
<relativePath>../parent/pom.xml</relativePath>
|
||||
</parent>
|
||||
|
||||
|
||||
@@ -32,6 +32,10 @@ server:
|
||||
uri-encoding: UTF-8
|
||||
# 表单请求数据的最大大小
|
||||
max-http-form-post-size: 20MB
|
||||
# # 客户端发送请求参数个数限制
|
||||
# max-parameter-count: 10000
|
||||
# # 文件上传的表单请求参数个数限制
|
||||
# max-part-count: 50
|
||||
# # 进程的最大连接数
|
||||
# max-connections: 8192
|
||||
# # 连接数满后的排队个数
|
||||
|
||||
@@ -44,7 +44,7 @@ set "RUN_JAVA=%JAVA_HOME%\bin\java"
|
||||
goto runJava
|
||||
|
||||
:runJava
|
||||
call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.launch.WarLauncher
|
||||
call "%RUN_JAVA%" -cp %CLASS_PATH% %JAVA_OPTS% org.springframework.boot.loader.launch.WarLauncher %*
|
||||
goto end
|
||||
|
||||
:end
|
||||
|
||||
@@ -32,4 +32,4 @@ else
|
||||
RUN_JAVA="$JAVA_HOME"/bin/java
|
||||
fi
|
||||
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.launch.WarLauncher
|
||||
exec "$RUN_JAVA" -cp $CLASS_PATH $JAVA_OPTS org.springframework.boot.loader.launch.WarLauncher $@
|
||||
@@ -1,20 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<configuration debug="false" scan="false">
|
||||
|
||||
<!-- Logger level setting -->
|
||||
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
|
||||
<include resource="config/logger-core.xml"/>
|
||||
|
||||
<!-- Console log output -->
|
||||
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||
<encoder>
|
||||
<pattern>%d{HH:mm:ss.SSS} %clr(%-5p) %clr([%-39logger{39}]){cyan} - %m%n%wEx</pattern>
|
||||
</encoder>
|
||||
</appender>
|
||||
|
||||
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
||||
<root level="WARN">
|
||||
<appender-ref ref="console" />
|
||||
</root>
|
||||
|
||||
</configuration>
|
||||
Reference in New Issue
Block a user