李学强 6 месяцев назад
Родитель
Сommit
98ea634386
59 измененных файлов с 392 добавлено и 394 удалено
  1. 1 1
      .gitignore
  2. 25 2
      lxq-admin/pom.xml
  3. 1 0
      lxq-admin/src/main/java/com/lxq/admin/biz/LxqAdminApplication.java
  4. 2 0
      lxq-admin/src/main/java/com/lxq/admin/biz/security/LxqRemoteRegisteredClientRepository.java
  5. 64 1
      lxq-admin/src/main/resources/application.yml
  6. 2 2
      lxq-common/lxq-common-core/pom.xml
  7. 5 24
      lxq-common/lxq-common-core/src/main/resources/logback-spring.xml
  8. 2 2
      lxq-common/lxq-common-excel/pom.xml
  9. 2 6
      lxq-common/lxq-common-excel/src/main/java/com/lxq/common/excel/ExcelHandlerConfiguration.java
  10. 1 7
      lxq-common/lxq-common-excel/src/main/java/com/lxq/common/excel/handler/AbstractSheetWriteHandler.java
  11. 2 3
      lxq-common/lxq-common-excel/src/main/java/com/lxq/common/excel/handler/ManySheetWriteHandler.java
  12. 2 3
      lxq-common/lxq-common-excel/src/main/java/com/lxq/common/excel/handler/SingleSheetWriteHandler.java
  13. 0 25
      lxq-common/lxq-common-excel/src/main/java/com/lxq/common/excel/http/RemoteSysService.java
  14. 2 2
      lxq-common/lxq-common-idempotent/pom.xml
  15. 2 2
      lxq-common/lxq-common-log/pom.xml
  16. 2 2
      lxq-common/lxq-common-mq/pom.xml
  17. 7 2
      lxq-common/lxq-common-mybatis/pom.xml
  18. 2 11
      lxq-common/lxq-common-mybatis/src/main/java/com/lxq/common/mybatis/MybatisAutoConfiguration.java
  19. 0 76
      lxq-common/lxq-common-mybatis/src/main/java/com/lxq/common/mybatis/handler/MchTenantLineHandler.java
  20. 0 70
      lxq-common/lxq-common-mybatis/src/main/java/com/lxq/common/mybatis/handler/StoreTenantLineHandler.java
  21. 26 16
      lxq-common/lxq-common-mybatis/src/main/java/com/lxq/common/mybatis/plugins/LxqPaginationInnerInterceptor.java
  22. 2 2
      lxq-common/lxq-common-oss/pom.xml
  23. 2 2
      lxq-common/lxq-common-pay/pom.xml
  24. 0 1
      lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/PayConfiguration.java
  25. 0 3
      lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/config/WechatPayConfig.java
  26. 4 4
      lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/factory/AlipayClientFactory.java
  27. 0 3
      lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/factory/PaymentFactory.java
  28. 0 3
      lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/handlers/DefaultPayMessageHandler.java
  29. 0 2
      lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/handlers/PayMessageHandler.java
  30. 0 1
      lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/model/PayMessage.java
  31. 0 1
      lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/model/RefundRequest.java
  32. 0 1
      lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/model/RefundResponse.java
  33. 13 14
      lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/service/ali/AliPayService.java
  34. 2 2
      lxq-common/lxq-common-security/pom.xml
  35. 0 1
      lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/annotation/EnableAuthResourceServer.java
  36. 2 3
      lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/annotation/EnableLoginResourceServer.java
  37. 1 1
      lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/component/LxqResourceServerConfiguration.java
  38. 1 1
      lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/component/LxqSecurityInnerAspect.java
  39. 1 1
      lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/component/LxqSecurityMessageSourceConfiguration.java
  40. 2 2
      lxq-common/lxq-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  41. 2 2
      lxq-common/lxq-common-swagger/pom.xml
  42. 6 2
      lxq-system/pom.xml
  43. 15 0
      lxq-system/src/main/java/com/lxq/system/biz/config/BeanConfigScanConfig.java
  44. 2 0
      lxq-system/src/main/java/com/lxq/system/biz/model/SysRoleMenu.java
  45. 2 0
      lxq-system/src/main/java/com/lxq/system/biz/model/SysUserPost.java
  46. 3 3
      lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysDeptServiceImpl.java
  47. 2 3
      lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysDictServiceImpl.java
  48. 4 40
      lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysFileServiceImpl.java
  49. 1 2
      lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysLogServiceImpl.java
  50. 1 8
      lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysOauthClientDetailsServiceImpl.java
  51. 4 8
      lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysPublicParamServiceImpl.java
  52. 2 7
      lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysRoleServiceImpl.java
  53. 3 5
      lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysUserServiceImpl.java
  54. 1 0
      lxq-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  55. 62 0
      lxq-system/src/main/resources/application-dev.yml
  56. 21 0
      lxq-system/src/main/resources/application-prod.yml
  57. 19 0
      lxq-system/src/main/resources/application-test.yml
  58. 1 1
      lxq-system/src/main/resources/mapper/SysUserMapper.xml
  59. 61 8
      pom.xml

+ 1 - 1
.gitignore

@@ -17,7 +17,7 @@ data/
 target/
 
 ### IntelliJ IDEA ###
-.idea/*
+.idea/
 *.iws
 *.iml
 *.ipr

+ 25 - 2
lxq-admin/pom.xml

@@ -9,17 +9,40 @@
         <version>3.5.9</version>
     </parent>
 
+    <packaging>jar</packaging>
     <artifactId>lxq-admin</artifactId>
-
     <description>管理后台</description>
 
     <dependencies>
 
-        <!--日志处理-->
         <dependency>
             <groupId>com.lxq</groupId>
             <artifactId>lxq-system</artifactId>
         </dependency>
     </dependencies>
 
+    <build>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+            <!--打包java路径下的静态文件-->
+            <resource>
+                <directory>src/main/java</directory>
+                <filtering>false</filtering>
+                <includes>
+                    <include>**/*.xml</include>
+                </includes>
+            </resource>
+        </resources>
+        <plugins>
+            <!-- 该插件的作用是复制依赖的jar包到指定的文件夹里 -->
+            <plugin>
+                <!--该插件主要用途:构建可执行的JAR -->
+                <groupId>org.springframework.boot</groupId>
+                <artifactId>spring-boot-maven-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
 </project>

+ 1 - 0
lxq-admin/src/main/java/com/lxq/admin/biz/LxqAdminApplication.java

@@ -4,6 +4,7 @@ import com.lxq.common.security.annotation.EnableAuthResourceServer;
 import com.lxq.common.security.annotation.EnableLoginResourceServer;
 import com.lxq.common.swagger.annotation.EnablelxqDoc;
 import org.springframework.boot.SpringApplication;
+import org.springframework.boot.WebApplicationType;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.scheduling.annotation.EnableAsync;
 

+ 2 - 0
lxq-admin/src/main/java/com/lxq/admin/biz/security/LxqRemoteRegisteredClientRepository.java

@@ -18,6 +18,7 @@ import org.springframework.security.oauth2.server.authorization.client.Registere
 import org.springframework.security.oauth2.server.authorization.settings.ClientSettings;
 import org.springframework.security.oauth2.server.authorization.settings.OAuth2TokenFormat;
 import org.springframework.security.oauth2.server.authorization.settings.TokenSettings;
+import org.springframework.stereotype.Component;
 
 import java.time.Duration;
 import java.util.Arrays;
@@ -30,6 +31,7 @@ import java.util.Optional;
  * @date 2022/5/29
  */
 @RequiredArgsConstructor
+@Component
 public class LxqRemoteRegisteredClientRepository implements RegisteredClientRepository {
 
 	/**

+ 64 - 1
lxq-admin/src/main/resources/application.yml

@@ -3,6 +3,69 @@ server:
 
 spring:
   application:
-    name: @artifactId@
+    name: ${artifactId}
+  profiles:
+    active: @profiles.active@
 
+  main:
+    allow-bean-definition-overriding: true
+  cache:
+    type: redis
+    repositories:
+      enabled: false # 项目未使用到 Spring Data Redis 的 Repository,所以直接禁用,保证启动速度\
+  # Servlet 配置
+  servlet:
+    # 文件上传相关配置项
+    multipart:
+      max-file-size: 16MB # 单个文件大小
+      max-request-size: 32MB # 设置总上传的文件大小
+
+security:
+  oauth2:
+    ignore:
+      urls:
+        - /pay/payBack/**
+        - /cash/cashBack/**
+
+# swagger 配置
+swagger:
+  enabled: true
+  title: LXQ API
+  gateway: http://${GATEWAY_HOST:localhost}:${GATEWAY-PORT:8080}
+  token-url: ${swagger.gateway}/v1/lxq/oauth2/token
+  scope: server
+  services:
+    lxq-admin-biz: admin
+
+
+# mybaits-plus配置
+mybatis-plus:
+  mapper-locations: classpath*:/mapper/*.xml,classpath:mapper/*/*.xml
+  global-config:
+    banner: false # 关闭控制台的 Banner 打印
+    db-config:
+      id-type: auto
+      table-underline: true
+      logic-delete-value: 1  # 逻辑已删除值(默认为 1)
+      logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
+  type-handlers-package: com.lxq.common.mybatis.handler
+  configuration:
+    map-underscore-to-camel-case: true
+    shrink-whitespaces-in-sql: true
+    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志
+
+  encryptor:
+    password: DYgjCEIMVrj2W9xN
+mybatis-plus-join:
+  #是否打印 mybatis plus join banner 默认true
+  banner: false
+  #全局启用副表逻辑删除(默认true) 关闭后关联查询不会加副表逻辑删除
+  sub-table-logic: true
+  #拦截器MappedStatement缓存(默认true)
+  ms-cache: true
+  #表别名(默认 t)
+  table-alias: t
+  #副表逻辑删除条件的位置,支持where、on
+  #默认ON (1.4.7.2及之前版本默认为where)
+  logic-del-type: on
 

+ 2 - 2
lxq-common/lxq-common-core/pom.xml

@@ -15,8 +15,8 @@
     <description>lxq 公共工具类核心包</description>
 
     <properties>
-        <maven.compiler.source>16</maven.compiler.source>
-        <maven.compiler.target>16</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 

+ 5 - 24
lxq-common/lxq-common-core/src/main/resources/logback-spring.xml

@@ -1,19 +1,4 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!--
-  ~ Copyright (c) 2021 sky4cloud Authors. All Rights Reserved.
-  ~
-  ~ 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.
-  -->
 
 <configuration debug="false" scan="false">
 	<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
@@ -23,11 +8,11 @@
 			  value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
 	<property name="FILE_LOG_PATTERN" value=":%d{yyyy-MM-dd HH:mm:ss.SSS} %5p %t %c{1}: %m%n"/>
 	<!-- 彩色日志依赖的渲染类 -->
-	<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
+	<conversionRule conversionWord="clr" class="org.springframework.boot.logging.logback.ColorConverter"/>
 	<conversionRule conversionWord="wex"
-					converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
+					class="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
 	<conversionRule conversionWord="wEx"
-					converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
+					class="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
 	<!-- Console log output -->
 	<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
 		<encoder>
@@ -119,6 +104,8 @@
 	<springProfile name="dev">
 		<root level="INFO">
 			<appender-ref ref="console"/>
+			<appender-ref ref="debug"/>
+			<appender-ref ref="error"/>
 		</root>
 	</springProfile>
 
@@ -137,11 +124,5 @@
 			<appender-ref ref="aliyun" />
 		</root>
 	</springProfile>
-	<springProfile name="pre">
-		<root level="INFO">
-			<appender-ref ref="console"/>
-			<appender-ref ref="aliyun" />
-		</root>
-	</springProfile>
 
 </configuration>

+ 2 - 2
lxq-common/lxq-common-excel/pom.xml

@@ -18,8 +18,8 @@
         </developer>
     </developers>
     <properties>
-        <maven.compiler.source>16</maven.compiler.source>
-        <maven.compiler.target>16</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <easyexcel.version>3.3.2</easyexcel.version>
         <mica.version>3.0.0</mica.version>

+ 2 - 6
lxq-common/lxq-common-excel/src/main/java/com/lxq/common/excel/ExcelHandlerConfiguration.java

@@ -12,7 +12,6 @@ import com.lxq.common.excel.handler.ManySheetWriteHandler;
 import com.lxq.common.excel.handler.SheetWriteHandler;
 import com.lxq.common.excel.handler.SingleSheetWriteHandler;
 import com.lxq.common.excel.head.I18nHeaderCellWriteHandler;
-import com.lxq.common.excel.http.RemoteSysService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.InitializingBean;
 import org.springframework.beans.factory.ObjectProvider;
@@ -38,13 +37,10 @@ public class ExcelHandlerConfiguration implements InitializingBean {
 
 	private final ObjectProvider<List<Converter<?>>> converterProvider;
 
-	private final RemoteSysService remoteSysService;
-
 	/**
 	 * ExcelBuild增强
 	 * @return DefaultWriterBuilderEnhancer 默认什么也不做的增强器
 	 */
-	@Bean("ExcelWriterBuilderEnhancer")
 	@ConditionalOnMissingBean
 	public WriterBuilderEnhancer writerBuilderEnhancer() {
 		return new DefaultWriterBuilderEnhancer();
@@ -56,7 +52,7 @@ public class ExcelHandlerConfiguration implements InitializingBean {
 	@Bean("ExcelSingleSheetWriteHandler")
 	@ConditionalOnMissingBean
 	public SingleSheetWriteHandler singleSheetWriteHandler() {
-		return new SingleSheetWriteHandler(configProperties, ossClient, ossProperties, converterProvider, writerBuilderEnhancer(), remoteSysService);
+		return new SingleSheetWriteHandler(configProperties, ossClient, ossProperties, converterProvider, writerBuilderEnhancer());
 	}
 
 	/**
@@ -65,7 +61,7 @@ public class ExcelHandlerConfiguration implements InitializingBean {
 	@Bean("ExcelManySheetWriteHandler")
 	@ConditionalOnMissingBean
 	public ManySheetWriteHandler manySheetWriteHandler() {
-		return new ManySheetWriteHandler(configProperties, ossClient, ossProperties, converterProvider, writerBuilderEnhancer(), remoteSysService);
+		return new ManySheetWriteHandler(configProperties, ossClient, ossProperties, converterProvider, writerBuilderEnhancer());
 	}
 
 	/**

+ 1 - 7
lxq-common/lxq-common-excel/src/main/java/com/lxq/common/excel/handler/AbstractSheetWriteHandler.java

@@ -12,7 +12,6 @@ import com.aliyun.oss.OSS;
 import com.lxq.common.core.constant.SecurityConstants;
 import com.lxq.common.excel.annotation.ResponseExcel;
 import com.lxq.common.excel.annotation.Sheet;
-import com.lxq.common.excel.aop.DynamicNameAspect;
 import com.lxq.common.excel.config.ExcelConfigProperties;
 import com.lxq.common.excel.config.FileProperties;
 import com.lxq.common.excel.converters.LocalDateStringConverter;
@@ -21,7 +20,6 @@ import com.lxq.common.excel.enhance.WriterBuilderEnhancer;
 import com.lxq.common.excel.head.HeadGenerator;
 import com.lxq.common.excel.head.HeadMeta;
 import com.lxq.common.excel.head.I18nHeaderCellWriteHandler;
-import com.lxq.common.excel.http.RemoteSysService;
 import com.lxq.common.excel.kit.ExcelException;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.Getter;
@@ -41,8 +39,6 @@ import org.springframework.http.MediaTypeFactory;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.util.Assert;
 import org.springframework.util.StringUtils;
-import org.springframework.web.context.request.RequestAttributes;
-import org.springframework.web.context.request.RequestContextHolder;
 
 import java.io.*;
 import java.lang.reflect.Modifier;
@@ -68,8 +64,6 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap
 
 	private final WriterBuilderEnhancer excelWriterBuilderEnhance;
 
-	private final RemoteSysService remoteSysService;
-
 	private ApplicationContext applicationContext;
 
 
@@ -129,7 +123,7 @@ public abstract class AbstractSheetWriteHandler implements SheetWriteHandler, Ap
 		param.put("fileName", fileName);
 		param.put("bucketName", fileProperties.getBucketName());
 		param.put("type", responseExcel.suffix().getValue().replace(StrUtil.DOT, ""));
-		remoteSysService.saveFile(param, SecurityConstants.FROM_IN);
+//		remoteSysService.saveFile(param, SecurityConstants.FROM_IN);
 		fileInputStream.close();
 	}
 

+ 2 - 3
lxq-common/lxq-common-excel/src/main/java/com/lxq/common/excel/handler/ManySheetWriteHandler.java

@@ -10,7 +10,6 @@ import com.lxq.common.excel.annotation.Sheet;
 import com.lxq.common.excel.config.ExcelConfigProperties;
 import com.lxq.common.excel.config.FileProperties;
 import com.lxq.common.excel.enhance.WriterBuilderEnhancer;
-import com.lxq.common.excel.http.RemoteSysService;
 import com.lxq.common.excel.kit.ExcelException;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.ObjectProvider;
@@ -34,8 +33,8 @@ public class ManySheetWriteHandler extends AbstractSheetWriteHandler {
 	public ManySheetWriteHandler(ExcelConfigProperties configProperties,
 								 OSS ossClient, FileProperties ossProperties,
 								 ObjectProvider<List<Converter<?>>> converterProvider,
-								 WriterBuilderEnhancer excelWriterBuilderEnhance, RemoteSysService remoteSysService) {
-		super(configProperties, ossClient, ossProperties, converterProvider, excelWriterBuilderEnhance, remoteSysService);
+								 WriterBuilderEnhancer excelWriterBuilderEnhance) {
+		super(configProperties, ossClient, ossProperties, converterProvider, excelWriterBuilderEnhance);
 	}
 
 	/**

+ 2 - 3
lxq-common/lxq-common-excel/src/main/java/com/lxq/common/excel/handler/SingleSheetWriteHandler.java

@@ -8,7 +8,6 @@ import com.lxq.common.excel.annotation.ResponseExcel;
 import com.lxq.common.excel.config.ExcelConfigProperties;
 import com.lxq.common.excel.config.FileProperties;
 import com.lxq.common.excel.enhance.WriterBuilderEnhancer;
-import com.lxq.common.excel.http.RemoteSysService;
 import com.lxq.common.excel.kit.ExcelException;
 import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.beans.factory.ObjectProvider;
@@ -34,8 +33,8 @@ public class SingleSheetWriteHandler extends AbstractSheetWriteHandler {
     public SingleSheetWriteHandler(ExcelConfigProperties configProperties,
                                    OSS ossClient, FileProperties ossProperties,
                                    ObjectProvider<List<Converter<?>>> converterProvider,
-                                   WriterBuilderEnhancer excelWriterBuilderEnhance, RemoteSysService remoteSysService) {
-        super(configProperties, ossClient, ossProperties, converterProvider, excelWriterBuilderEnhance, remoteSysService);
+                                   WriterBuilderEnhancer excelWriterBuilderEnhance) {
+        super(configProperties, ossClient, ossProperties, converterProvider, excelWriterBuilderEnhance);
     }
 
     /**

+ 0 - 25
lxq-common/lxq-common-excel/src/main/java/com/lxq/common/excel/http/RemoteSysService.java

@@ -1,25 +0,0 @@
-package com.lxq.common.excel.http;
-
-import com.lxq.common.core.constant.SecurityConstants;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestHeader;
-import org.springframework.web.service.annotation.PostExchange;
-
-import java.util.Map;
-
-/**
- * 调用系统模块保存导出文件
- *
- * @author 没秃顶的码农
- * @date 2023/11/12
- */
-public interface RemoteSysService {
-
-	/**
-	 * 保存文件
-	 * @param sysFile 文件
-	 */
-	@PostExchange("/sysFile/save")
-	void saveFile(@RequestBody Map<String, Object> sysFile, @RequestHeader(SecurityConstants.FROM) String from);
-
-}

+ 2 - 2
lxq-common/lxq-common-idempotent/pom.xml

@@ -12,8 +12,8 @@
     <artifactId>lxq-common-idempotent</artifactId>
 
     <properties>
-        <maven.compiler.source>16</maven.compiler.source>
-        <maven.compiler.target>16</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
         <mica.version>3.0.0</mica.version>
         <redisson.version>3.16.2</redisson.version>

+ 2 - 2
lxq-common/lxq-common-log/pom.xml

@@ -15,8 +15,8 @@
     <description>lxq 日志服务</description>
 
     <properties>
-        <maven.compiler.source>16</maven.compiler.source>
-        <maven.compiler.target>16</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 

+ 2 - 2
lxq-common/lxq-common-mq/pom.xml

@@ -13,8 +13,8 @@
     <packaging>jar</packaging>
 
     <properties>
-        <maven.compiler.source>16</maven.compiler.source>
-        <maven.compiler.target>16</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
     <dependencies>

+ 7 - 2
lxq-common/lxq-common-mybatis/pom.xml

@@ -13,8 +13,8 @@
     <packaging>jar</packaging>
 
     <properties>
-        <maven.compiler.source>16</maven.compiler.source>
-        <maven.compiler.target>16</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 
@@ -24,6 +24,11 @@
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-annotation</artifactId>
         </dependency>
+        <!-- mybatis-plus 3.5.9 需要单独引入此依赖-->
+        <dependency>
+            <groupId>com.baomidou</groupId>
+            <artifactId>mybatis-plus-jsqlparser</artifactId>
+        </dependency>
         <dependency>
             <groupId>com.baomidou</groupId>
             <artifactId>mybatis-plus-extension</artifactId>

+ 2 - 11
lxq-common/lxq-common-mybatis/src/main/java/com/lxq/common/mybatis/MybatisAutoConfiguration.java

@@ -4,16 +4,13 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
-import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
 import com.lxq.common.mybatis.config.MybatisPlusMetaObjectHandler;
 import com.lxq.common.mybatis.encrypt.DecryptInterceptor;
 import com.lxq.common.mybatis.encrypt.EncryptInterceptor;
 import com.lxq.common.mybatis.encrypt.FieldEncryptProperties;
 import com.lxq.common.mybatis.encrypt.service.DefaultFieldEncryptService;
 import com.lxq.common.mybatis.encrypt.utils.FieldEncryptUtil;
-import com.lxq.common.mybatis.handler.MchTenantLineHandler;
-import com.lxq.common.mybatis.handler.StoreTenantLineHandler;
-import com.lxq.common.mybatis.plugins.SkyPaginationInnerInterceptor;
+import com.lxq.common.mybatis.plugins.LxqPaginationInnerInterceptor;
 import com.lxq.common.mybatis.resolver.SqlFilterArgumentResolver;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
@@ -51,14 +48,8 @@ public class MybatisAutoConfiguration implements WebMvcConfigurer {
 	@Bean
 	public MybatisPlusInterceptor mybatisPlusInterceptor() {
 		MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
-		//门店端多租户
-		StoreTenantLineHandler storeTenantLineHandler = new StoreTenantLineHandler();
-		//商户端多租户
-		MchTenantLineHandler mchTenantLineHandler = new MchTenantLineHandler();
-		interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(storeTenantLineHandler));
-		interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(mchTenantLineHandler));
 		//分页插件
-		interceptor.addInnerInterceptor(new SkyPaginationInnerInterceptor());
+		interceptor.addInnerInterceptor(new LxqPaginationInnerInterceptor());
 		//针对 update 和 delete 语句 作用: 阻止恶意的全表更新删除
 		interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());
         //乐观锁

+ 0 - 76
lxq-common/lxq-common-mybatis/src/main/java/com/lxq/common/mybatis/handler/MchTenantLineHandler.java

@@ -1,76 +0,0 @@
-package com.lxq.common.mybatis.handler;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
-import net.sf.jsqlparser.expression.Expression;
-import net.sf.jsqlparser.expression.LongValue;
-import org.springframework.security.authentication.AnonymousAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-
-import java.util.List;
-
-/**
- * 多租户自定义处理器
- *
- * @author lixueqiang
- * @date 2025/06/26
- */
-public class MchTenantLineHandler implements TenantLineHandler {
-
-    /**
-     * 多租户的表名
-     */
-    private final static List<String> TABLES = List.of("lkb_goods", "lkb_goods_file", "lkb_goods_file_cate", "lkb_order", "lkb_term_print_ticket", "lkb_term_vend");
-    @Override
-    public Expression getTenantId() {
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-        // 匿名接口直接返回
-        if (authentication instanceof AnonymousAuthenticationToken) {
-            return null;
-        }
-        Object principal = authentication.getPrincipal();
-        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(principal));
-        return new LongValue(jsonObject.getLongValue("id"));
-    }
-
-
-    @Override
-    public String getTenantIdColumn() {
-        return "mch_id";
-    }
-
-    /**
-     * 根据表名判断是否忽略拼接多租户条件
-     * <p>
-     * 默认都要进行解析并拼接多租户条件
-     *
-     * @param tableName 表名
-     * @return 是否忽略, true:表示忽略,false:需要解析并拼接多租户条件
-     */
-    @Override
-    public boolean ignoreTable(String tableName) {
-
-        if(!TABLES.contains(tableName)){
-            return true;
-        }
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-        // 匿名接口直接返回
-        if(authentication == null){
-            return true;
-        }
-        if (authentication instanceof AnonymousAuthenticationToken) {
-            return true;
-        }
-        Object principal = authentication.getPrincipal();
-        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(principal));
-        if("lkb_mch_app".equals(jsonObject.getString("clientId"))){
-            return false;
-        }
-        if("lkb_mch_app_sms".equals(jsonObject.getString("clientId"))){
-            return false;
-        }
-        return true;
-    }
-}

+ 0 - 70
lxq-common/lxq-common-mybatis/src/main/java/com/lxq/common/mybatis/handler/StoreTenantLineHandler.java

@@ -1,70 +0,0 @@
-package com.lxq.common.mybatis.handler;
-
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONObject;
-import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
-import net.sf.jsqlparser.expression.Expression;
-import net.sf.jsqlparser.expression.LongValue;
-import org.springframework.security.authentication.AnonymousAuthenticationToken;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
-
-import java.util.List;
-
-/**
- * 多租户自定义处理器
- *
- * @author lixueqiang
- * @date 2025/06/26
- */
-public class StoreTenantLineHandler implements TenantLineHandler {
-
-    /**
-     * 多租户的表名
-     */
-    private final static List<String> TABLES = List.of("lkb_order", "lkb_goods_store_category", "lkb_term_print_ticket", "lkb_term_vend");
-    @Override
-    public Expression getTenantId() {
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-        // 匿名接口直接返回
-        if (authentication instanceof AnonymousAuthenticationToken) {
-            return null;
-        }
-        Object principal = authentication.getPrincipal();
-        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(principal));
-        return new LongValue(jsonObject.getLongValue("id"));
-    }
-
-
-    @Override
-    public String getTenantIdColumn() {
-        return "store_id";
-    }
-
-    /**
-     * 根据表名判断是否忽略拼接多租户条件
-     * <p>
-     * 默认都要进行解析并拼接多租户条件
-     *
-     * @param tableName 表名
-     * @return 是否忽略, true:表示忽略,false:需要解析并拼接多租户条件
-     */
-    @Override
-    public boolean ignoreTable(String tableName) {
-
-        if(!TABLES.contains(tableName)){
-            return true;
-        }
-        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
-        // 匿名接口直接返回
-        if(authentication == null){
-            return true;
-        }
-        if (authentication instanceof AnonymousAuthenticationToken) {
-            return true;
-        }
-        Object principal = authentication.getPrincipal();
-        JSONObject jsonObject = JSON.parseObject(JSON.toJSONString(principal));
-        return !"lkb_store_pwd".equals(jsonObject.getString("clientId"));
-    }
-}

+ 26 - 16
lxq-common/lxq-common-mybatis/src/main/java/com/lxq/common/mybatis/plugins/SkyPaginationInnerInterceptor.java → lxq-common/lxq-common-mybatis/src/main/java/com/lxq/common/mybatis/plugins/LxqPaginationInnerInterceptor.java

@@ -1,33 +1,34 @@
 package com.lxq.common.mybatis.plugins;
 
+import org.apache.ibatis.executor.Executor;
+import org.apache.ibatis.mapping.BoundSql;
+import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.session.ResultHandler;
+import org.apache.ibatis.session.RowBounds;
+
 import com.baomidou.mybatisplus.annotation.DbType;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.ParameterUtils;
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.pagination.dialects.IDialect;
+
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 import lombok.NoArgsConstructor;
-import org.apache.ibatis.executor.Executor;
-import org.apache.ibatis.mapping.BoundSql;
-import org.apache.ibatis.mapping.MappedStatement;
-import org.apache.ibatis.session.ResultHandler;
-import org.apache.ibatis.session.RowBounds;
-
-import java.sql.SQLException;
 
 /**
- * 分页拦截器
+ * 分页拦截器实现类,用于处理分页查询逻辑
  * <p>
- * 重构分页插件, 当 size 小于 0 时, 直接设置为 0, 防止错误查询全表
+ * 当分页大小小于0时自动设置为0,防止全表查询
  *
- * @author 没秃顶的码农
- * @date 2023/10/28
+ * @author lengleng
+ * @date 2025/05/31
+ * @since 2021年10月11日
  */
-@EqualsAndHashCode(callSuper = true)
 @Data
 @NoArgsConstructor
-public class SkyPaginationInnerInterceptor extends PaginationInnerInterceptor {
+@EqualsAndHashCode(callSuper = false)
+public class LxqPaginationInnerInterceptor extends PaginationInnerInterceptor {
 
 	/**
 	 * 数据库类型
@@ -43,17 +44,26 @@ public class SkyPaginationInnerInterceptor extends PaginationInnerInterceptor {
 	 */
 	private IDialect dialect;
 
-	public SkyPaginationInnerInterceptor(DbType dbType) {
+	public LxqPaginationInnerInterceptor(DbType dbType) {
 		this.dbType = dbType;
 	}
 
-	public SkyPaginationInnerInterceptor(IDialect dialect) {
+	public LxqPaginationInnerInterceptor(IDialect dialect) {
 		this.dialect = dialect;
 	}
 
+	/**
+	 * 在执行查询前处理分页参数
+	 * @param executor 执行器
+	 * @param ms 映射语句
+	 * @param parameter 参数对象
+	 * @param rowBounds 行边界
+	 * @param resultHandler 结果处理器
+	 * @param boundSql 绑定SQL
+	 */
 	@Override
 	public void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds,
-			ResultHandler resultHandler, BoundSql boundSql) throws SQLException {
+							ResultHandler resultHandler, BoundSql boundSql) {
 		IPage<?> page = ParameterUtils.findPage(parameter).orElse(null);
 		// size 小于 0 直接设置为 0 , 即不查询任何数据
 		if (null != page && page.getSize() < 0) {

+ 2 - 2
lxq-common/lxq-common-oss/pom.xml

@@ -13,8 +13,8 @@
     <packaging>jar</packaging>
 
     <properties>
-        <maven.compiler.source>16</maven.compiler.source>
-        <maven.compiler.target>16</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 

+ 2 - 2
lxq-common/lxq-common-pay/pom.xml

@@ -13,8 +13,8 @@
     <description>三方支付插件</description>
 
     <properties>
-        <maven.compiler.source>16</maven.compiler.source>
-        <maven.compiler.target>16</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
     <dependencies>

+ 0 - 1
lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/PayConfiguration.java

@@ -32,7 +32,6 @@ public class PayConfiguration {
 
     private final AliPayMultiConfig aliPayMultiConfig;
 
-
     @Bean
     @ConditionalOnBean(AlipayClientFactory.class)
     public AliPayService aliPayService(AlipayClientFactory alipayClientFactory) {

+ 0 - 3
lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/config/WechatPayConfig.java

@@ -2,8 +2,6 @@ package com.lxq.common.pay.config;
 
 import lombok.Data;
 import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.cloud.context.config.annotation.RefreshScope;
-import org.springframework.stereotype.Component;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -16,7 +14,6 @@ import java.util.Map;
  */
 @Data
 @ConfigurationProperties(prefix = "pay.wx")
-@RefreshScope
 public class WechatPayConfig {
 
     private Map<String, WechatAppConfig> configs = new HashMap<>();

+ 4 - 4
lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/factory/AlipayClientFactory.java

@@ -1,9 +1,9 @@
 package com.lxq.common.pay.factory;
 
-import com.alipay.biz.AlipayApiException;
-import com.alipay.biz.AlipayClient;
-import com.alipay.biz.AlipayConfig;
-import com.alipay.biz.DefaultAlipayClient;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.AlipayConfig;
+import com.alipay.api.DefaultAlipayClient;
 import com.lxq.common.pay.config.AliPayMultiConfig;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;

+ 0 - 3
lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/factory/PaymentFactory.java

@@ -4,9 +4,6 @@ import cn.hutool.extra.spring.SpringUtil;
 import com.lxq.common.core.exception.GlobalCustomerException;
 import com.lxq.common.pay.enums.PayPlatformEnum;
 import com.lxq.common.pay.service.PayService;
-import com.lxq.common.pay.service.ali.AliPayService;
-import com.lxq.common.pay.service.wechat.WechatPayService;
-import com.lxq.common.pay.service.yue.YuePayService;
 import lombok.RequiredArgsConstructor;
 import org.springframework.core.Ordered;
 import org.springframework.stereotype.Component;

+ 0 - 3
lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/handlers/DefaultPayMessageHandler.java

@@ -2,13 +2,10 @@ package com.lxq.common.pay.handlers;
 
 import com.alibaba.fastjson.JSON;
 import com.lxq.common.pay.enums.PayConstants;
-import com.lxq.common.pay.enums.PayPlatformEnum;
 import com.lxq.common.pay.model.PayMessage;
 import com.lxq.common.pay.service.PayService;
 import lombok.extern.slf4j.Slf4j;
 
-import java.util.Map;
-
 /**
  * 默认支付回调处理程序
  *

+ 0 - 2
lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/handlers/PayMessageHandler.java

@@ -5,8 +5,6 @@ import com.lxq.common.pay.model.PayMessage;
 import com.lxq.common.pay.service.PayService;
 import org.springframework.core.Ordered;
 
-import java.util.Map;
-
 /**
  * 支付消息处理程序
  *

+ 0 - 1
lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/model/PayMessage.java

@@ -1,7 +1,6 @@
 package com.lxq.common.pay.model;
 
 import com.lxq.common.pay.enums.PayPlatformEnum;
-import lombok.Builder;
 import lombok.Data;
 
 import java.io.Serializable;

+ 0 - 1
lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/model/RefundRequest.java

@@ -1,7 +1,6 @@
 package com.lxq.common.pay.model;
 
 import com.lxq.common.pay.enums.PayPlatformEnum;
-import lombok.Builder;
 import lombok.Data;
 
 /**

+ 0 - 1
lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/model/RefundResponse.java

@@ -1,7 +1,6 @@
 package com.lxq.common.pay.model;
 
 import com.lxq.common.pay.enums.PayPlatformEnum;
-import com.lxq.common.pay.enums.PayStatusCommEnum;
 import lombok.Builder;
 import lombok.Data;
 

+ 13 - 14
lxq-common/lxq-common-pay/src/main/java/com/lxq/common/pay/service/ali/AliPayService.java

@@ -7,20 +7,19 @@ import cn.hutool.core.util.CharsetUtil;
 import cn.hutool.core.util.StrUtil;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
-import com.alipay.biz.AlipayApiException;
-import com.alipay.biz.AlipayClient;
-import com.alipay.biz.domain.AlipayTradeQueryModel;
-import com.alipay.biz.domain.AlipayTradeRefundModel;
-import com.alipay.biz.internal.util.AlipaySignature;
-import com.alipay.biz.request.AlipayTradeAppPayRequest;
-import com.alipay.biz.request.AlipayTradeCreateRequest;
-import com.alipay.biz.request.AlipayTradeQueryRequest;
-import com.alipay.biz.request.AlipayTradeRefundRequest;
-import com.alipay.biz.response.AlipayTradeAppPayResponse;
-import com.alipay.biz.response.AlipayTradeCreateResponse;
-import com.alipay.biz.response.AlipayTradeQueryResponse;
-import com.alipay.biz.response.AlipayTradeRefundResponse;
-import com.github.binarywang.wxpay.service.WxPayService;
+import com.alipay.api.AlipayApiException;
+import com.alipay.api.AlipayClient;
+import com.alipay.api.domain.AlipayTradeQueryModel;
+import com.alipay.api.domain.AlipayTradeRefundModel;
+import com.alipay.api.internal.util.AlipaySignature;
+import com.alipay.api.request.AlipayTradeAppPayRequest;
+import com.alipay.api.request.AlipayTradeCreateRequest;
+import com.alipay.api.request.AlipayTradeQueryRequest;
+import com.alipay.api.request.AlipayTradeRefundRequest;
+import com.alipay.api.response.AlipayTradeAppPayResponse;
+import com.alipay.api.response.AlipayTradeCreateResponse;
+import com.alipay.api.response.AlipayTradeQueryResponse;
+import com.alipay.api.response.AlipayTradeRefundResponse;
 import com.lxq.common.core.exception.GlobalCustomerException;
 import com.lxq.common.pay.config.AliPayMultiConfig;
 import com.lxq.common.pay.enums.PayConstants;

+ 2 - 2
lxq-common/lxq-common-security/pom.xml

@@ -16,8 +16,8 @@
 
 
     <properties>
-        <maven.compiler.source>16</maven.compiler.source>
-        <maven.compiler.target>16</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 

+ 0 - 1
lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/annotation/EnableAuthResourceServer.java

@@ -2,7 +2,6 @@ package com.lxq.common.security.annotation;
 
 import com.lxq.common.security.component.AuthResourceServerConfiguration;
 import com.lxq.common.security.component.SkyResourceServerAutoConfiguration;
-import com.lxq.common.security.component.SkyResourceServerConfiguration;
 import org.springframework.context.annotation.Import;
 
 import java.lang.annotation.*;

+ 2 - 3
lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/annotation/EnableLoginResourceServer.java

@@ -1,7 +1,6 @@
 package com.lxq.common.security.annotation;
 
-import com.lxq.common.security.component.SkyResourceServerAutoConfiguration;
-import com.lxq.common.security.component.SkyResourceServerConfiguration;
+import com.lxq.common.security.component.LxqResourceServerConfiguration;
 import org.springframework.context.annotation.Import;
 
 import java.lang.annotation.*;
@@ -17,7 +16,7 @@ import java.lang.annotation.*;
 @Inherited
 @Target({ ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
-@Import(SkyResourceServerConfiguration.class)
+@Import(LxqResourceServerConfiguration.class)
 public @interface EnableLoginResourceServer {
 
 }

+ 1 - 1
lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/component/SkyResourceServerConfiguration.java → lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/component/LxqResourceServerConfiguration.java

@@ -45,7 +45,7 @@ import java.util.Arrays;
  */
 @RequiredArgsConstructor
 @Configuration
-public class SkyResourceServerConfiguration {
+public class LxqResourceServerConfiguration {
 
 	private final OAuth2AuthorizationService authorizationService;
 

+ 1 - 1
lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/component/SkySecurityInnerAspect.java → lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/component/LxqSecurityInnerAspect.java

@@ -23,7 +23,7 @@ import org.springframework.security.access.AccessDeniedException;
 @Slf4j
 @Aspect
 @RequiredArgsConstructor
-public class SkySecurityInnerAspect implements Ordered {
+public class LxqSecurityInnerAspect implements Ordered {
 
 	private final HttpServletRequest request;
 

+ 1 - 1
lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/component/SkySecurityMessageSourceConfiguration.java → lxq-common/lxq-common-security/src/main/java/com/lxq/common/security/component/LxqSecurityMessageSourceConfiguration.java

@@ -17,7 +17,7 @@ import static org.springframework.boot.autoconfigure.condition.ConditionalOnWebA
  * 注入自定义错误处理,覆盖 org/springframework/security/messages 内置异常
  */
 @ConditionalOnWebApplication(type = SERVLET)
-public class SkySecurityMessageSourceConfiguration implements WebMvcConfigurer {
+public class LxqSecurityMessageSourceConfiguration implements WebMvcConfigurer {
 
 	@Bean
 	public MessageSource securityMessageSource() {

+ 2 - 2
lxq-common/lxq-common-security/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -1,4 +1,4 @@
 com.lxq.common.security.service.LxqRedisOAuth2AuthorizationService
 com.lxq.common.security.service.LxqRedisOAuth2AuthorizationConsentService
-com.lxq.common.security.component.SkySecurityInnerAspect
-com.lxq.common.security.component.SkySecurityMessageSourceConfiguration
+com.lxq.common.security.component.LxqSecurityInnerAspect
+com.lxq.common.security.component.LxqSecurityMessageSourceConfiguration

+ 2 - 2
lxq-common/lxq-common-swagger/pom.xml

@@ -14,8 +14,8 @@
     <description>lxq 接口文档</description>
 
     <properties>
-        <maven.compiler.source>16</maven.compiler.source>
-        <maven.compiler.target>16</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     </properties>
 

+ 6 - 2
lxq-system/pom.xml

@@ -9,6 +9,7 @@
         <version>3.5.9</version>
     </parent>
 
+    <packaging>jar</packaging>
     <artifactId>lxq-system</artifactId>
 
     <description>system系统模块</description>
@@ -23,7 +24,7 @@
         <!-- orm 模块-->
         <dependency>
             <groupId>com.baomidou</groupId>
-            <artifactId>mybatis-plus-boot-starter</artifactId>
+            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
         </dependency>
         <dependency>
             <groupId>com.mysql</groupId>
@@ -63,6 +64,9 @@
             <groupId>com.lxq</groupId>
             <artifactId>lxq-common-excel</artifactId>
         </dependency>
+        <dependency>
+            <groupId>com.lxq</groupId>
+            <artifactId>lxq-common-mybatis</artifactId>
+        </dependency>
     </dependencies>
-
 </project>

+ 15 - 0
lxq-system/src/main/java/com/lxq/system/biz/config/BeanConfigScanConfig.java

@@ -0,0 +1,15 @@
+package com.lxq.system.biz.config;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.context.annotation.ComponentScan;
+import org.springframework.context.annotation.Configuration;
+
+
+/**
+ * @author lixueqiang
+ */
+@ComponentScan(basePackages = "com.lxq.system")
+@MapperScan(basePackages = "com.lxq.system.biz.mapper")
+@Configuration
+public class BeanConfigScanConfig{
+}

+ 2 - 0
lxq-system/src/main/java/com/lxq/system/biz/model/SysRoleMenu.java

@@ -1,5 +1,6 @@
 package com.lxq.system.biz.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -27,6 +28,7 @@ public class SysRoleMenu extends Model<SysRoleMenu> {
 	 * 角色ID
 	 */
 	@Schema(description = "角色id")
+	@TableField
 	private Long roleId;
 
 	/**

+ 2 - 0
lxq-system/src/main/java/com/lxq/system/biz/model/SysUserPost.java

@@ -1,5 +1,6 @@
 package com.lxq.system.biz.model;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.extension.activerecord.Model;
 import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
@@ -21,6 +22,7 @@ public class SysUserPost extends Model<SysUserPost> {
 	 * 用户ID
 	 */
 	@Schema(description = "用户id")
+	@TableField
 	private Long userId;
 
 	/**

+ 3 - 3
lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysDeptServiceImpl.java

@@ -48,7 +48,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 
 	/**
 	 * 查询全部部门树
-	 * @param deptName
+	 * @param deptName 部门
 	 * @return 树 部门名称
 	 */
 	@Override
@@ -62,7 +62,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 			.filter(dept -> dept.getDeptId().intValue() != dept.getParentId())
 			.sorted(Comparator.comparingInt(SysDept::getSortOrder))
 			.map(dept -> {
-				TreeNode<Long> treeNode = new TreeNode();
+				TreeNode<Long> treeNode = new TreeNode<>();
 				treeNode.setId(dept.getDeptId());
 				treeNode.setParentId(dept.getParentId());
 				treeNode.setName(dept.getName());
@@ -105,7 +105,7 @@ public class SysDeptServiceImpl extends ServiceImpl<SysDeptMapper, SysDept> impl
 		// 添加当前节点
 		resDeptList.addAll(allDeptList.stream()
 			.filter(sysDept -> deptId.equals(sysDept.getDeptId()))
-			.collect(Collectors.toList()));
+			.toList());
 		return resDeptList;
 	}
 

+ 2 - 3
lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysDictServiceImpl.java

@@ -35,20 +35,19 @@ public class SysDictServiceImpl extends ServiceImpl<SysDictMapper, SysDict> impl
 	/**
 	 * 根据ID 删除字典
 	 * @param ids 字典ID 列表
-	 * @return
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
 	@CacheEvict(value = CacheConstants.DICT_DETAILS, allEntries = true)
 	public R removeDictByIds(Long[] ids) {
 
-		List<Long> dictIdList = baseMapper.selectBatchIds(CollUtil.toList(ids))
+		List<Long> dictIdList = baseMapper.selectByIds(CollUtil.toList(ids))
 			.stream()
 			.filter(sysDict -> !sysDict.getSystemFlag().equals(DictTypeEnum.SYSTEM.getType()))// 系统内置类型不删除
 			.map(SysDict::getId)
 			.collect(Collectors.toList());
 
-		baseMapper.deleteBatchIds(dictIdList);
+		baseMapper.deleteByIds(dictIdList);
 
 		dictItemMapper.delete(Wrappers.<SysDictItem>lambdaQuery().in(SysDictItem::getDictId, dictIdList));
 		return R.ok();

+ 4 - 40
lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysFileServiceImpl.java

@@ -1,54 +1,17 @@
 package com.lxq.system.biz.service.impl;
 
-import cn.hutool.core.util.StrUtil;
-import com.alibaba.excel.EasyExcel;
-import com.alibaba.excel.ExcelWriter;
-import com.alibaba.excel.converters.Converter;
-import com.alibaba.excel.support.ExcelTypeEnum;
-import com.alibaba.excel.write.builder.ExcelWriterBuilder;
-import com.alibaba.excel.write.builder.ExcelWriterSheetBuilder;
-import com.alibaba.excel.write.handler.WriteHandler;
-import com.alibaba.excel.write.metadata.WriteSheet;
-import com.aliyun.oss.OSS;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.lxq.common.core.constant.SecurityConstants;
-import com.lxq.common.core.util.R;
-import com.lxq.common.excel.annotation.ResponseExcel;
-import com.lxq.common.excel.annotation.Sheet;
-import com.lxq.common.excel.config.ExcelConfigProperties;
-import com.lxq.common.excel.config.FileProperties;
-import com.lxq.common.excel.converters.LocalDateStringConverter;
-import com.lxq.common.excel.converters.LocalDateTimeStringConverter;
-import com.lxq.common.excel.head.HeadGenerator;
 import com.lxq.common.file.oss.service.OssTemplate;
-import com.lxq.system.biz.model.SysFile;
 import com.lxq.system.biz.mapper.SysFileMapper;
+import com.lxq.system.biz.model.SysFile;
 import com.lxq.system.biz.service.SysFileService;
 import jakarta.servlet.http.HttpServletResponse;
 import lombok.AllArgsConstructor;
-import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.BeanUtils;
-import org.springframework.core.io.ClassPathResource;
 import org.springframework.stereotype.Service;
-import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
-import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.text.SimpleDateFormat;
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
-import java.util.UUID;
-
-import static com.alibaba.excel.EasyExcelFactory.writerSheet;
 
 /**
  * 文件管理
@@ -86,7 +49,8 @@ public class SysFileServiceImpl extends ServiceImpl<SysFileMapper, SysFile> impl
 
 	@Override
 	public SysFile getFileByFileName(String fileName) {
-		SysFile sysFile = this.getOne(new LambdaQueryWrapper<SysFile>().likeRight(SysFile::getFileName, fileName).orderByDesc(SysFile::getCreateTime).last("limit 1"));
-		return sysFile;
+
+        return this.getOne(new LambdaQueryWrapper<SysFile>().likeRight(SysFile::getFileName, fileName)
+				.orderByDesc(SysFile::getCreateTime).last("limit 1"));
 	}
 }

+ 1 - 2
lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysLogServiceImpl.java

@@ -9,9 +9,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.lxq.system.biz.domain.dto.SysLogDTO;
 import com.lxq.system.biz.mapper.SysLogMapper;
-import com.lxq.system.biz.service.SysLogService;
 import com.lxq.system.biz.model.SysLog;
-import org.springframework.beans.BeanUtils;
+import com.lxq.system.biz.service.SysLogService;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 

+ 1 - 8
lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysOauthClientDetailsServiceImpl.java

@@ -28,8 +28,6 @@ public class SysOauthClientDetailsServiceImpl extends ServiceImpl<SysOauthClient
 
 	/**
 	 * 根据客户端信息
-	 * @param clientDetails
-	 * @return
 	 */
 	@Override
 	@CacheEvict(value = CacheConstants.CLIENT_DETAILS_KEY, key = "#clientDetails.clientId")
@@ -41,8 +39,6 @@ public class SysOauthClientDetailsServiceImpl extends ServiceImpl<SysOauthClient
 
 	/**
 	 * 添加客户端
-	 * @param clientDetails
-	 * @return
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)
@@ -53,13 +49,10 @@ public class SysOauthClientDetailsServiceImpl extends ServiceImpl<SysOauthClient
 
 	/**
 	 * 插入或更新客户端对象
-	 * @param clientDetails
-	 * @return
 	 */
-	private SysOauthClientDetails insertOrUpdate(SysOauthClientDetails clientDetails) {
+	private void insertOrUpdate(SysOauthClientDetails clientDetails) {
 		// 更新数据库
 		saveOrUpdate(clientDetails);
-		return clientDetails;
 	}
 
 	/**

+ 4 - 8
lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysPublicParamServiceImpl.java

@@ -3,13 +3,12 @@ package com.lxq.system.biz.service.impl;
 import cn.hutool.core.collection.CollUtil;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.lxq.common.core.constant.enums.ErrorTypeEnum;
-import com.lxq.system.biz.mapper.SysPublicParamMapper;
-import com.lxq.system.biz.service.SysPublicParamService;
 import com.lxq.common.core.constant.CacheConstants;
 import com.lxq.common.core.constant.enums.DictTypeEnum;
 import com.lxq.common.core.util.R;
+import com.lxq.system.biz.mapper.SysPublicParamMapper;
 import com.lxq.system.biz.model.SysPublicParam;
+import com.lxq.system.biz.service.SysPublicParamService;
 import lombok.AllArgsConstructor;
 import org.springframework.cache.annotation.CacheEvict;
 import org.springframework.cache.annotation.Cacheable;
@@ -43,8 +42,6 @@ public class SysPublicParamServiceImpl extends ServiceImpl<SysPublicParamMapper,
 
 	/**
 	 * 更新参数
-	 * @param sysPublicParam
-	 * @return
 	 */
 	@Override
 	@CacheEvict(value = CacheConstants.PARAMS_DETAILS, key = "#sysPublicParam.publicKey")
@@ -56,17 +53,16 @@ public class SysPublicParamServiceImpl extends ServiceImpl<SysPublicParamMapper,
 	/**
 	 * 删除参数
 	 * @param publicIds 参数ID列表
-	 * @return
 	 */
 	@Override
 	@CacheEvict(value = CacheConstants.PARAMS_DETAILS, allEntries = true)
 	public R removeParamByIds(Long[] publicIds) {
-		List<Long> idList = this.baseMapper.selectBatchIds(CollUtil.toList(publicIds))
+		List<Long> idList = this.baseMapper.selectByIds(CollUtil.toList(publicIds))
 			.stream()
 			.filter(p -> !p.getSystemFlag().equals(DictTypeEnum.SYSTEM.getType()))// 系统内置的跳过不能删除
 			.map(SysPublicParam::getPublicId)
 			.collect(Collectors.toList());
-		return R.ok(this.removeBatchByIds(idList));
+		return R.ok(this.removeByIds(idList));
 	}
 
 	/**

+ 2 - 7
lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysRoleServiceImpl.java

@@ -36,11 +36,9 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
 
 	/**
 	 * 通过用户ID,查询角色信息
-	 * @param userId
-	 * @return
 	 */
 	@Override
-	public List findRolesByUserId(Long userId) {
+	public List<SysRole> findRolesByUserId(Long userId) {
 		return baseMapper.listRolesByUserId(userId);
 	}
 
@@ -48,18 +46,15 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
 	 * 根据角色ID 查询角色列表,注意缓存删除
 	 * @param roleIdList 角色ID列表
 	 * @param key 缓存key
-	 * @return
 	 */
 	@Override
 	@Cacheable(value = CacheConstants.ROLE_DETAILS, key = "#key", unless = "#result.isEmpty()")
 	public List<SysRole> findRolesByRoleIds(List<Long> roleIdList, String key) {
-		return baseMapper.selectBatchIds(roleIdList);
+		return baseMapper.selectByIds(roleIdList);
 	}
 
 	/**
 	 * 通过角色ID,删除角色,并清空角色菜单缓存
-	 * @param ids
-	 * @return
 	 */
 	@Override
 	@Transactional(rollbackFor = Exception.class)

+ 3 - 5
lxq-system/src/main/java/com/lxq/system/biz/service/impl/SysUserServiceImpl.java

@@ -124,7 +124,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	/**
 	 * 通过查用户的全部信息
 	 * @param sysUser 用户
-	 * @return
 	 */
 	@Override
 	public UserInfo findUserInfo(SysUser sysUser) {
@@ -142,9 +141,9 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 		roleIds.forEach(roleId -> {
 			List<String> permissionList = sysMenuService.findMenuByRoleId(roleId)
 				.stream()
-				.filter(menu -> StrUtil.isNotEmpty(menu.getPermission()))
 				.map(SysMenu::getPermission)
-				.collect(Collectors.toList());
+				.filter(StrUtil::isNotEmpty)
+				.toList();
 			permissions.addAll(permissionList);
 		});
 		userInfo.setPermissions(ArrayUtil.toArray(permissions, String.class));
@@ -181,7 +180,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	@Transactional(rollbackFor = Exception.class)
 	public Boolean deleteUserByIds(Long[] ids) {
 		// 删除 spring cache
-		List<SysUser> userList = baseMapper.selectBatchIds(CollUtil.toList(ids));
+		List<SysUser> userList = baseMapper.selectByIds(CollUtil.toList(ids));
 		Cache cache = cacheManager.getCache(CacheConstants.USER_DETAILS);
 		for (SysUser sysUser : userList) {
 			// 立即删除
@@ -247,7 +246,6 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
 	/**
 	 * 锁定用户
 	 * @param user 用户
-	 * @return
 	 */
 	@Override
 	@CacheEvict(value = CacheConstants.USER_DETAILS, key = "#user.username")

+ 1 - 0
lxq-system/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -0,0 +1 @@
+com.lxq.system.biz.config.BeanConfigScanConfig

+ 62 - 0
lxq-system/src/main/resources/application-dev.yml

@@ -0,0 +1,62 @@
+spring:
+  datasource:
+    type: com.zaxxer.hikari.HikariDataSource
+    dynamic:
+      primary: main
+      strict: true #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
+      datasource:
+        main:
+          driver-class-name: com.mysql.cj.jdbc.Driver
+          username: root
+          password: root
+          url: jdbc:mysql://kxs-mysql:3306/lkb_merchant?characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true
+    #hikari数据源特性配置
+    hikari:
+      maximum-pool-size: 10 #最大连接数,默认值10.
+      minimum-idle: 10 #最小空闲连接,默认值10.
+      connection-timeout: 60000 #连接超时时间(毫秒),默认值30秒.
+      #空闲连接超时时间,默认值600000(10分钟),只有空闲连接数大于最大连接数且空闲时间超过该值,才会被释放
+      #如果大于等于 max-lifetime 且 max-lifetime>0,则会被重置为0.
+      idle-timeout: 600000
+      max-lifetime: 3000000 #连接最大存活时间,默认值30分钟.设置应该比mysql设置的超时时间短
+      connection-test-query: select 1 #连接测试查询
+  data:
+    redis:
+      host: kxs-redis
+    mongodb:
+      host: kxs-mongo
+      port: 27017
+      username: root
+      password: root
+      database: lkb_cloud
+      authentication-database: admin
+      maxPoolSize: 100
+      minPoolSize: 10
+  rabbitmq:
+    host: kxs-rabbitmq
+    port: 5672
+    username: admin
+    password: admin
+    publisher-confirm-type: correlated #消息发送成功交互
+    publisher-returns: true
+    listener:
+      simple:
+        # 重试机制
+        retry:
+          enabled: true #是否开启消费者重试
+          max-attempts: 3 #最大重试次数
+          initial-interval: 5000ms #重试间隔时间(单位毫秒)
+          max-interval: 1200000ms #重试最大时间间隔(单位毫秒)
+          # 乘子。间隔时间*乘子=下一次的间隔时间,不能超过max-interval
+          # 以本处为例:第一次间隔 5 秒,第二次间隔 10 秒,以此类推
+          multiplier: 2
+
+file:
+  oss:
+    bucket-name: laikeba-uni
+    file-prefix: lkb_uni
+    endpoint: oss-cn-chengdu.aliyuncs.com
+    accessKey: LTAI5tNpieENPDCywXKfXR7a
+    secretKey: jwFgbwFNoJ9yLTetsLMehbVdtr7b04
+    file-url: https://lkb-uni.kexiaoshuang.com/
+

+ 21 - 0
lxq-system/src/main/resources/application-prod.yml

@@ -0,0 +1,21 @@
+
+spring:
+  cloud:
+    nacos:
+      username: @nacos.username@
+      password: @nacos.password@
+      discovery:
+        server-addr: ${NACOS_HOST:mse-78d0edb13-nacos-ans.mse.aliyuncs.com}:${NACOS_PORT:8848}
+        watch:
+          enabled: true
+        watch-delay: 1000
+        metadata:
+          preserved.heart.beat.interval: 1000
+          preserved.heart.beat.timeout: 3000
+          preserved.ip.delete.timeout: 3000
+      config:
+        server-addr: ${spring.cloud.nacos.discovery.server-addr}
+  config:
+    import:
+      - optional:nacos:application-@profiles.active@.yml
+      - optional:nacos:${spring.application.name}-@profiles.active@.yml

+ 19 - 0
lxq-system/src/main/resources/application-test.yml

@@ -0,0 +1,19 @@
+
+spring:
+  cloud:
+    nacos:
+      username: @nacos.username@
+      password: @nacos.password@
+      discovery:
+        server-addr: nacos.default.svc.cluster.local:8848
+        namespace: 68400b62-95c0-4593-a7c2-63d9857736ed
+        watch:
+          enabled: true
+        watch-delay: 1000
+      config:
+        server-addr: nacos.default.svc.cluster.local:8848
+        namespace: 68400b62-95c0-4593-a7c2-63d9857736ed
+  config:
+    import:
+      - optional:nacos:application-@profiles.active@.yml
+      - optional:nacos:${spring.application.name}-@profiles.active@.yml

+ 1 - 1
lxq-system/src/main/resources/mapper/SysUserMapper.xml

@@ -3,7 +3,7 @@
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.lxq.system.biz.mapper.SysUserMapper">
     <!-- 通用查询映射结果 -->
-    <resultMap id="baseResultMap" type="com.lxq.system.biz.vo.admin.UserVO">
+    <resultMap id="baseResultMap" type="com.lxq.system.biz.domain.vo.UserVO">
         <id column="user_id" property="userId"/>
         <result column="username" property="username"/>
         <result column="password" property="password"/>

+ 61 - 8
pom.xml

@@ -12,13 +12,12 @@
     <properties>
         <spring-boot.version>3.5.9</spring-boot.version>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-        <maven.compiler.source>16</maven.compiler.source>
-        <maven.compiler.target>16</maven.compiler.target>
+        <maven.compiler.source>21</maven.compiler.source>
+        <maven.compiler.target>21</maven.compiler.target>
         <captcha.version>2.2.3</captcha.version>
         <jasypt.version>3.0.5</jasypt.version>
         <jaxb.version>2.3.5</jaxb.version>
         <spring.authorization.version>1.1.2</spring.authorization.version>
-        <swagger.fox.version>3.0.0</swagger.fox.version>
         <springdoc.version>2.2.0</springdoc.version>
         <swagger.core.version>2.2.14</swagger.core.version>
         <git.commit.plugin>6.0.0</git.commit.plugin>
@@ -27,15 +26,14 @@
         <log4j2.version>2.17.1</log4j2.version>
         <fastjson.version>1.2.83</fastjson.version>
         <hutool.version>5.8.35</hutool.version>
-        <mybatis-plus.version>3.5.3.2</mybatis-plus.version>
-        <mybatis-plus-join.version>1.5.2</mybatis-plus-join.version>
+        <mybatis-plus.version>3.5.15</mybatis-plus.version>
+        <mybatis-plus-join.version>1.5.5</mybatis-plus-join.version>
         <mysql.version>8.0.33</mysql.version>
         <dynamic-ds.version>4.1.3</dynamic-ds.version>
         <lxq.common.version>${project.version}</lxq.common.version>
         <knife4j.version>4.3.0</knife4j.version>
         <fastjson.version>1.2.83</fastjson.version>
         <oss.version>3.15.1</oss.version>
-        <push.version>1.0.11</push.version>
         <rocketmq.version>2.2.3</rocketmq.version>
         <weixin.version>4.6.0</weixin.version>
         <alipay.version>4.40.186.ALL</alipay.version>
@@ -45,7 +43,17 @@
     <dependencies>
         <dependency>
             <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-webflux</artifactId>
+            <artifactId>spring-boot-starter-web</artifactId>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.springframework.boot</groupId>
+                    <artifactId>spring-boot-starter-tomcat</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-jetty</artifactId>
         </dependency>
         <!--配置文件处理器-->
         <dependency>
@@ -67,6 +75,11 @@
         </dependency>
     </dependencies>
 
+    <modules>
+        <module>lxq-common</module>
+        <module>lxq-system</module>
+        <module>lxq-admin</module>
+    </modules>
     <dependencyManagement>
         <dependencies>
 
@@ -197,7 +210,12 @@
             <!--orm 相关-->
             <dependency>
                 <groupId>com.baomidou</groupId>
-                <artifactId>mybatis-plus-boot-starter</artifactId>
+                <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
+                <version>${mybatis-plus.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.baomidou</groupId>
+                <artifactId>mybatis-plus-jsqlparser</artifactId>
                 <version>${mybatis-plus.version}</version>
             </dependency>
             <dependency>
@@ -247,6 +265,41 @@
         </dependencies>
     </dependencyManagement>
 
+    <profiles>
+        <profile>
+            <id>dev</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <profiles.active>dev</profiles.active>
+            </properties>
+            <activation>
+                <!-- 默认环境 -->
+                <activeByDefault>true</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>test</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <profiles.active>test</profiles.active>
+            </properties>
+            <activation>
+                <!-- 默认环境 -->
+                <activeByDefault>false</activeByDefault>
+            </activation>
+        </profile>
+        <profile>
+            <id>prod</id>
+            <properties>
+                <!-- 环境标识,需要与配置文件的名称相对应 -->
+                <profiles.active>prod</profiles.active>
+            </properties>
+            <activation>
+                <!-- 默认环境 -->
+                <activeByDefault>false</activeByDefault>
+            </activation>
+        </profile>
+    </profiles>
     <build>
         <finalName>${project.name}</finalName>
         <resources>