chore(deps): 更新Spring Boot版本并优化项目配置

- 将Spring Boot父版本从3.5.9升级到3.5.10
- 修复文件上传路径中用户名前缺少斜杠的问题
This commit is contained in:
2026-02-06 11:36:04 +08:00
parent c362f70ad3
commit b3eaa44c7d
34 changed files with 119 additions and 20 deletions
@@ -50,7 +50,7 @@ public class KitFileLocalUploadHelper {
if (StrUtil.isBlank(currentUserName)) {
return PATH_MAC.replace("${appName}", SystemConst.CURRENT_APP_NAME).replace("${username}", "");
}
return PATH_MAC.replace("${appName}", SystemConst.CURRENT_APP_NAME).replace("${username}", currentUserName);
return PATH_MAC.replace("${appName}", SystemConst.CURRENT_APP_NAME).replace("${username}", "/" + currentUserName);
}
return PATH_LINUX.replace("${appName}", SystemConst.CURRENT_APP_NAME);
}
@@ -62,12 +62,12 @@ public class KitWsServer {
* @param message 客户端发送过来的消息
*/
@OnMessage
public void onMessage(String message, Session session) {
public void onMessage(String message, Session session) throws IOException {
KitWsMessage wsMessage = JSON.parseObject(message, KitWsMessage.class);
String bizCode = wsMessage.getBizCode();
Object data = wsMessage.getData();
log.info("收到来 sid={} 的信息: message={}, bizCode={}, data={}", sid, message, bizCode,
JSON.toJSONString(data));
log.info("收到来 sid={} 的信息: message={}, bizCode={}, data={}", sid, message, bizCode, JSON.toJSONString(data));
session.getBasicRemote().sendText(message);
}
/**
@@ -102,7 +102,7 @@ public class KitWsServer {
/**
* 精准推送消息
*/
public void sendMessage(KitWsMessage message, @PathParam("sid") String sid) {
public void sendMessage(KitWsMessage message, @PathParam("sid") String sid) throws IOException {
String body = JSON.toJSONString(message);
// log.info("推送消息到{}, 推送内容:{}", sid, message);
try {
@@ -71,6 +71,14 @@ public class SystemMenuController {
return ResponseEntity.ok(systemMenuTbs);
}
@ApiOperation("返回全部的菜单")
@PostMapping(value = "/listRoleMenuByPid")
@PreAuthorize("@el.check('menu:list','roles:list')")
public ResponseEntity<List<SystemMenuTb>> listRoleMenuByPid(@RequestParam Long pid) {
List<SystemMenuTb> systemMenuTbs = systemMenuService.listMenuByPid(pid, true);
return ResponseEntity.ok(systemMenuTbs);
}
@ApiOperation("根据菜单ID返回所有子节点ID, 包含自身ID")
@PostMapping(value = "/listChildMenuSetByMenuId")
@PreAuthorize("@el.check('menu:list','roles:list')")
@@ -25,7 +25,7 @@ import java.util.List;
public class GenCode {
private static final String ADDR = "127.0.0.1";
private static final Integer PORT = 23306;
private static final Integer PORT = 3306;
private static final String DATABASE_NAME = "cutejava";
private static final String DATABASE_USER = "root";
private static final String DATABASE_PWD = "kd123456";
@@ -0,0 +1,31 @@
/*
* Copyright 2021-2026 Odboy
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.util;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.junit.jupiter.api.Test;
public class KitDateUtilTest {
@Test
public void testGetWeekDay() {
SimpleDateFormat simpleDateformat = new SimpleDateFormat("E");
assertEquals(simpleDateformat.format(new Date()), KitDateUtil.getWeekDay());
}
}
@@ -0,0 +1,30 @@
/*
* Copyright 2021-2026 Odboy
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.util;
/**
* 钉钉 Teambition 实际工时数计算
*/
public class WorkTimeTests {
public static void main(String[] args) {
// 总工作时长(时)
double totalHour = 11;
// 实际工作时长(天),一天8小时工作制
double actualHour = totalHour / 8.0;
System.err.println("actualHour=" + actualHour + " 天");
}
}
+3 -4
View File
@@ -19,8 +19,8 @@
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<!-- <version>3.3.13</version>-->
<version>3.5.9</version>
<!-- <version>3.3.13</version>-->
<version>3.5.10</version>
</parent>
<properties>
@@ -40,7 +40,6 @@
<undertow.version>2.3.22.Final</undertow.version>
<freemarker.version>2.3.34</freemarker.version>
<p6spy.version>3.9.1</p6spy.version>
<knife4j.version>4.5.0</knife4j.version>
<mysql.version>9.5.0</mysql.version>
<ip2region.version>3.5.7</ip2region.version>
<!-- <springaop.version>1.9.7</springaop.version>-->
@@ -189,7 +188,7 @@
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi3-jakarta-spring-boot-starter</artifactId>
<version>${knife4j.version}</version>
<version>4.5.0</version>
</dependency>
<!-- Mysql依赖包 -->
@@ -19,7 +19,7 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.context;
import lombok.extern.slf4j.Slf4j;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.context;
import cn.hutool.core.util.StrUtil;
@@ -38,10 +39,13 @@ public class BootApplication {
String port = env.getProperty("server.port");
String path = StrUtil.isEmpty(env.getProperty("config.servlet.context-path")) ? ""
: env.getProperty("config.servlet.context-path");
log.info("\n----------------------------------------------------------\n\t" +
"Application is running! Access URLs:\n\t" + "Local: \t\thttp://localhost:" + port + path + "/\n\t" +
"External: \thttp://" + ip + ":" + port + path + "/\n\t" + "Swagger文档: \thttp://" + ip + ":" + port +
path + "/doc.html\n" + "----------------------------------------------------------");
log.info(
"----------------------------------------------------------\n"+
"\tApplication is running! Access URLs:\n"+
"\tLocal: \t\thttp://localhost:{}{}\n"+
"\tExternal: \thttp://{}:{}{}\n"+
"\tSwagger文档: \thttp://{}:{}{}/doc.html\n"+
"----------------------------------------------------------", port, path, ip, port, path, ip, port, path);
}
@Bean
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.logging;
import cn.hutool.core.date.TimeInterval;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.monitor.service;
import org.springframework.http.ResponseEntity;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.mybatisplus.config;
/**
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.mybatisplus.config;
import java.lang.annotation.ElementType;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.mybatisplus.config;
import cn.hutool.core.util.StrUtil;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.mybatisplus.config;
import com.baomidou.mybatisplus.annotation.FieldFill;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.mybatisplus.config;
import com.baomidou.mybatisplus.annotation.DbType;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.mybatisplus.config;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure;
@@ -49,12 +50,15 @@ public class RemoveDruidAdConfig {
*/
@Bean
public FilterRegistrationBean<Filter> removeDruidAdFilterRegistrationBean(DruidStatProperties properties) {
// 获取web监控页面的参数
DruidStatProperties.StatViewServlet config = properties.getStatViewServlet();
// 提取common.js的配置路径
String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*";
String commonJsPattern = pattern.replaceAll("\\*", "js/common.js");
final String filePath = "support/http/resources/js/common.js";
//创建filter进行过滤
Filter filter = new Filter() {
@Override
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.quartz.config;
import lombok.extern.slf4j.Slf4j;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.server.config;
import cn.odboy.framework.properties.AppProperties;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.server.converters;
import cn.hutool.core.util.StrUtil;
@@ -47,6 +47,7 @@ public class UndertowWebSocketConfig implements WebServerFactoryCustomizer<Under
int bufferSize = 1024;
int maxPoolSize = calculateMaxPoolSize(processorCount);
int threadLocalCacheSize = calculateThreadLocalCacheSize(processorCount);
factory.addDeploymentInfoCustomizers(deploymentInfo -> {
WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo();
webSocketDeploymentInfo.setBuffers(
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.websocket.config;
import org.springframework.context.annotation.Bean;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.websocket.context;
import java.util.Collection;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.websocket.context;
import cn.odboy.base.KitObject;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.websocket.model;
import cn.odboy.base.KitObject;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.framework.websocket.util;
import cn.odboy.framework.exception.BadRequestException;
@@ -17,7 +17,6 @@ package cn.odboy.system.controller;
import cn.odboy.base.KitPageArgs;
import cn.odboy.base.KitPageResult;
import cn.odboy.base.KitSelectOptionVo;
import cn.odboy.system.dal.dataobject.SystemUserTb;
import cn.odboy.system.dal.model.request.SystemQueryUserArgs;
import cn.odboy.system.dal.model.request.SystemUpdateUserPasswordArgs;
@@ -65,8 +65,7 @@ public class SystemAuthService {
KitValidUtil.isNull(loginArgs);
// 密码解密
String password =
KitRsaEncryptUtil.decryptByPrivateKey(properties.getRsa().getPrivateKey(), loginArgs.getPassword());
String password = KitRsaEncryptUtil.decryptByPrivateKey(properties.getRsa().getPrivateKey(), loginArgs.getPassword());
// 校验验证码
systemCaptchaService.validate(loginArgs.getUuid(), loginArgs.getCode());
// 查询用户信息
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy;
import cn.odboy.framework.mybatisplus.core.KitMpCmdGenUtil;
@@ -23,8 +24,8 @@ import java.util.List;
*/
public class GenCode {
private static final String ADDR = "192.168.100.128";
private static final Integer PORT = 23306;
private static final String ADDR = "127.0.0.1";
private static final Integer PORT = 3306;
private static final String DATABASE_NAME = "cutejava";
private static final String DATABASE_USER = "root";
private static final String DATABASE_PWD = "kd123456";
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy;
import cn.odboy.framework.monitor.service.KitHealthCheckPointService;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy;
import cn.hutool.core.date.DateTime;
@@ -35,12 +36,15 @@ public class MyBatisMapperTests {
public void testMapper1() {
// SELECT * FROM system_user WHERE (create_time > '2025-08-18T14:48:18.400+0800');
systemUserMapper.selectList(new LambdaQueryWrapper<SystemUserTb>().gt(SystemUserTb::getCreateTime, new Date()));
// SELECT * FROM system_user WHERE (create_time > '2025-08-18T14:50:16.786+0800');
systemUserMapper.selectList(
new LambdaQueryWrapper<SystemUserTb>().gt(SystemUserTb::getCreateTime, DateTime.now()));
// SELECT * FROM system_user WHERE (create_time > '2025-08-18 14:53:46');
systemUserMapper.selectList(new LambdaQueryWrapper<SystemUserTb>().gt(SystemUserTb::getCreateTime,
DateUtil.formatDateTime(new Date())));
// SELECT * FROM system_user WHERE (create_time > '2025-08-18');
systemUserMapper.selectList(
new LambdaQueryWrapper<SystemUserTb>().gt(SystemUserTb::getCreateTime, DateUtil.formatDate(new Date())));
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.util;
import static cn.odboy.util.KitDesEncryptUtil.desDecrypt;
@@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package cn.odboy.util;
import static cn.odboy.util.KitFileUtil.getPrefix;