Merge branch 'master-jdk21' of https://gitee.com/zhijiantianya/ruoyi-vue-pro
# Conflicts: # yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoSecurityAutoConfiguration.java # yudao-framework/yudao-spring-boot-starter-security/src/main/java/cn/iocoder/yudao/framework/security/config/YudaoWebSecurityConfigurerAdapter.java
This commit is contained in:
commit
853db724ec
@ -3,6 +3,7 @@ package cn.iocoder.yudao.framework.mybatis.config;
|
|||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import cn.iocoder.yudao.framework.mybatis.core.handler.DefaultDBFieldHandler;
|
import cn.iocoder.yudao.framework.mybatis.core.handler.DefaultDBFieldHandler;
|
||||||
import com.baomidou.mybatisplus.annotation.DbType;
|
import com.baomidou.mybatisplus.annotation.DbType;
|
||||||
|
import com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration;
|
||||||
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
|
||||||
import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
|
import com.baomidou.mybatisplus.core.incrementer.IKeyGenerator;
|
||||||
import com.baomidou.mybatisplus.extension.incrementer.*;
|
import com.baomidou.mybatisplus.extension.incrementer.*;
|
||||||
@ -20,7 +21,7 @@ import org.springframework.core.env.ConfigurableEnvironment;
|
|||||||
*
|
*
|
||||||
* @author 芋道源码
|
* @author 芋道源码
|
||||||
*/
|
*/
|
||||||
@AutoConfiguration
|
@AutoConfiguration(before = MybatisPlusAutoConfiguration.class) // 目的:先于 MyBatis Plus 自动配置,避免 @MapperScan 可能扫描不到 Mapper 打印 warn 日志
|
||||||
@MapperScan(value = "${yudao.info.base-package}", annotationClass = Mapper.class,
|
@MapperScan(value = "${yudao.info.base-package}", annotationClass = Mapper.class,
|
||||||
lazyInitialization = "${mybatis.lazy-initialization:false}") // Mapper 懒加载,目前仅用于单元测试
|
lazyInitialization = "${mybatis.lazy-initialization:false}") // Mapper 懒加载,目前仅用于单元测试
|
||||||
public class YudaoMybatisAutoConfiguration {
|
public class YudaoMybatisAutoConfiguration {
|
||||||
|
@ -3,6 +3,7 @@ package cn.iocoder.yudao.framework.redis.config;
|
|||||||
import cn.hutool.core.util.ReflectUtil;
|
import cn.hutool.core.util.ReflectUtil;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
|
||||||
|
import org.redisson.spring.starter.RedissonAutoConfigurationV2;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||||
@ -12,7 +13,7 @@ import org.springframework.data.redis.serializer.RedisSerializer;
|
|||||||
/**
|
/**
|
||||||
* Redis 配置类
|
* Redis 配置类
|
||||||
*/
|
*/
|
||||||
@AutoConfiguration
|
@AutoConfiguration(before = RedissonAutoConfigurationV2.class) // 目的:使用自己定义的 RedisTemplate Bean
|
||||||
public class YudaoRedisAutoConfiguration {
|
public class YudaoRedisAutoConfiguration {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -19,6 +19,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
|
|||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
import org.springframework.http.HttpHeaders;
|
import org.springframework.http.HttpHeaders;
|
||||||
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -87,6 +88,7 @@ public class YudaoSwaggerAutoConfiguration {
|
|||||||
* 自定义 OpenAPI 处理器
|
* 自定义 OpenAPI 处理器
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
|
@Primary // 目的:以我们创建的 OpenAPIService Bean 为主,避免一键改包后,启动报错!
|
||||||
public OpenAPIService openApiBuilder(Optional<OpenAPI> openAPI,
|
public OpenAPIService openApiBuilder(Optional<OpenAPI> openAPI,
|
||||||
SecurityService securityParser,
|
SecurityService securityParser,
|
||||||
SpringDocConfigProperties springDocConfigProperties,
|
SpringDocConfigProperties springDocConfigProperties,
|
||||||
@ -94,7 +96,6 @@ public class YudaoSwaggerAutoConfiguration {
|
|||||||
Optional<List<OpenApiBuilderCustomizer>> openApiBuilderCustomizers,
|
Optional<List<OpenApiBuilderCustomizer>> openApiBuilderCustomizers,
|
||||||
Optional<List<ServerBaseUrlCustomizer>> serverBaseUrlCustomizers,
|
Optional<List<ServerBaseUrlCustomizer>> serverBaseUrlCustomizers,
|
||||||
Optional<JavadocProvider> javadocProvider) {
|
Optional<JavadocProvider> javadocProvider) {
|
||||||
|
|
||||||
return new OpenAPIService(openAPI, securityParser, springDocConfigProperties,
|
return new OpenAPIService(openAPI, securityParser, springDocConfigProperties,
|
||||||
propertyResolverUtils, openApiBuilderCustomizers, serverBaseUrlCustomizers, javadocProvider);
|
propertyResolverUtils, openApiBuilderCustomizers, serverBaseUrlCustomizers, javadocProvider);
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import cn.iocoder.yudao.framework.web.core.handler.GlobalResponseBodyHandler;
|
|||||||
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
import cn.iocoder.yudao.framework.web.core.util.WebFrameworkUtils;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
|
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
|
||||||
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
import org.springframework.boot.context.properties.EnableConfigurationProperties;
|
||||||
@ -122,7 +123,9 @@ public class YudaoWebAutoConfiguration implements WebMvcConfigurer {
|
|||||||
* @param restTemplateBuilder {@link RestTemplateAutoConfiguration#restTemplateBuilder}
|
* @param restTemplateBuilder {@link RestTemplateAutoConfiguration#restTemplateBuilder}
|
||||||
*/
|
*/
|
||||||
@Bean
|
@Bean
|
||||||
|
@ConditionalOnMissingBean
|
||||||
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
|
public RestTemplate restTemplate(RestTemplateBuilder restTemplateBuilder) {
|
||||||
return restTemplateBuilder.build();
|
return restTemplateBuilder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -87,7 +87,7 @@ public interface ErrorCodeConstants {
|
|||||||
ErrorCode PRODUCT_CATEGORY_USED = new ErrorCode(1_020_009_002, "产品分类已关联产品");
|
ErrorCode PRODUCT_CATEGORY_USED = new ErrorCode(1_020_009_002, "产品分类已关联产品");
|
||||||
ErrorCode PRODUCT_CATEGORY_PARENT_NOT_EXISTS = new ErrorCode(1_020_009_003, "父分类不存在");
|
ErrorCode PRODUCT_CATEGORY_PARENT_NOT_EXISTS = new ErrorCode(1_020_009_003, "父分类不存在");
|
||||||
ErrorCode PRODUCT_CATEGORY_PARENT_NOT_FIRST_LEVEL = new ErrorCode(1_020_009_004, "父分类不能是二级分类");
|
ErrorCode PRODUCT_CATEGORY_PARENT_NOT_FIRST_LEVEL = new ErrorCode(1_020_009_004, "父分类不能是二级分类");
|
||||||
ErrorCode product_CATEGORY_EXISTS_CHILDREN = new ErrorCode(1_020_009_005, "存在子分类,无法删除");
|
ErrorCode PRODUCT_CATEGORY_EXISTS_CHILDREN = new ErrorCode(1_020_009_005, "存在子分类,无法删除");
|
||||||
|
|
||||||
// ========== 商机状态 1_020_010_000 ==========
|
// ========== 商机状态 1_020_010_000 ==========
|
||||||
ErrorCode BUSINESS_STATUS_TYPE_NOT_EXISTS = new ErrorCode(1_020_010_000, "商机状态组不存在");
|
ErrorCode BUSINESS_STATUS_TYPE_NOT_EXISTS = new ErrorCode(1_020_010_000, "商机状态组不存在");
|
||||||
|
@ -110,10 +110,10 @@ public class CrmProductCategoryServiceImpl implements CrmProductCategoryService
|
|||||||
validateProductCategoryExists(id);
|
validateProductCategoryExists(id);
|
||||||
// 1.2 校验是否还有子分类
|
// 1.2 校验是否还有子分类
|
||||||
if (productCategoryMapper.selectCountByParentId(id) > 0) {
|
if (productCategoryMapper.selectCountByParentId(id) > 0) {
|
||||||
throw exception(product_CATEGORY_EXISTS_CHILDREN);
|
throw exception(PRODUCT_CATEGORY_EXISTS_CHILDREN);
|
||||||
}
|
}
|
||||||
// 1.3 校验是否被产品使用
|
// 1.3 校验是否被产品使用
|
||||||
if (crmProductService.getProductByCategoryId(id) !=null) {
|
if (crmProductService.getProductByCategoryId(id) > 0) {
|
||||||
throw exception(PRODUCT_CATEGORY_USED);
|
throw exception(PRODUCT_CATEGORY_USED);
|
||||||
}
|
}
|
||||||
// 2. 删除
|
// 2. 删除
|
||||||
|
@ -119,7 +119,7 @@ public class CouponServiceImpl implements CouponService {
|
|||||||
Integer status = LocalDateTimeUtils.beforeNow(coupon.getValidEndTime())
|
Integer status = LocalDateTimeUtils.beforeNow(coupon.getValidEndTime())
|
||||||
? CouponStatusEnum.EXPIRE.getStatus() // 退还时可能已经过期了
|
? CouponStatusEnum.EXPIRE.getStatus() // 退还时可能已经过期了
|
||||||
: CouponStatusEnum.UNUSED.getStatus();
|
: CouponStatusEnum.UNUSED.getStatus();
|
||||||
int updateCount = couponMapper.updateByIdAndStatus(id, CouponStatusEnum.UNUSED.getStatus(),
|
int updateCount = couponMapper.updateByIdAndStatus(id, CouponStatusEnum.USED.getStatus(),
|
||||||
new CouponDO().setStatus(status));
|
new CouponDO().setStatus(status));
|
||||||
if (updateCount == 0) {
|
if (updateCount == 0) {
|
||||||
throw exception(COUPON_STATUS_NOT_USED);
|
throw exception(COUPON_STATUS_NOT_USED);
|
||||||
|
@ -34,7 +34,8 @@ public class ProjectReactor {
|
|||||||
* 白名单文件,不进行重写,避免出问题
|
* 白名单文件,不进行重写,避免出问题
|
||||||
*/
|
*/
|
||||||
private static final Set<String> WHITE_FILE_TYPES = SetUtils.asSet("gif", "jpg", "svg", "png", // 图片
|
private static final Set<String> WHITE_FILE_TYPES = SetUtils.asSet("gif", "jpg", "svg", "png", // 图片
|
||||||
"eot", "woff2", "ttf", "woff"); // 字体
|
"eot", "woff2", "ttf", "woff", // 字体
|
||||||
|
"xdb"); // IP 库
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
|
Loading…
Reference in New Issue
Block a user