yangys
2024-04-02 e92e8c3bf21effadc856fe335d50cf8605512ccf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package com.qianwen.core.mp.config;
 
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
import java.util.List;
import net.sf.jsqlparser.expression.Expression;
import net.sf.jsqlparser.expression.StringValue;
import org.mybatis.spring.annotation.MapperScan;
import com.qianwen.core.launch.props.BladePropertySource;
import com.qianwen.core.mp.BladeMetaObjectHandler;
import com.qianwen.core.mp.injector.BladeSqlInjector;
import com.qianwen.core.mp.intercept.QueryInterceptor;
import com.qianwen.core.mp.plugins.BladePaginationInterceptor;
import com.qianwen.core.mp.plugins.SqlLogInterceptor;
import com.qianwen.core.mp.props.MybatisPlusProperties;
import com.qianwen.core.mp.resolver.PageArgumentResolver;
import com.qianwen.core.secure.utils.AuthUtil;
import com.qianwen.core.tool.utils.Func;
import com.qianwen.core.tool.utils.ObjectUtil;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
import org.springframework.web.method.support.HandlerMethodArgumentResolver;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
 
@EnableConfigurationProperties({MybatisPlusProperties.class})
@Configuration(proxyBeanMethods = false)
@MapperScan({"com.qianwen.**.mapper.**"})
@BladePropertySource("classpath:/blade-mybatis.yml")
/* loaded from: blade-starter-mybatis-9.3.0.0-SNAPSHOT.jar:org/springblade/core/mp/config/MybatisPlusConfiguration.class */
public class MybatisPlusConfiguration implements WebMvcConfigurer {
    @ConditionalOnMissingBean({TenantLineInnerInterceptor.class})
    @Bean
    public TenantLineInnerInterceptor tenantLineInnerInterceptor() {
        return new TenantLineInnerInterceptor(new TenantLineHandler() { // from class: org.springblade.core.mp.config.MybatisPlusConfiguration.1
            public Expression getTenantId() {
                return new StringValue(Func.toStr(AuthUtil.getTenantId(), "000000"));
            }
 
            public boolean ignoreTable(String tableName) {
                return true;
            }
        });
    }
 
    @ConditionalOnMissingBean({MybatisPlusInterceptor.class})
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(ObjectProvider<QueryInterceptor[]> queryInterceptors, TenantLineInnerInterceptor tenantLineInnerInterceptor, MybatisPlusProperties mybatisPlusProperties) {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        if (mybatisPlusProperties.getTenantMode().booleanValue()) {
            interceptor.addInnerInterceptor(tenantLineInnerInterceptor);
        }
        BladePaginationInterceptor paginationInterceptor = new BladePaginationInterceptor();
        QueryInterceptor[] queryInterceptorArray = (QueryInterceptor[]) queryInterceptors.getIfAvailable();
        if (ObjectUtil.isNotEmpty(queryInterceptorArray)) {
            AnnotationAwareOrderComparator.sort(queryInterceptorArray);
            paginationInterceptor.setQueryInterceptors(queryInterceptorArray);
        }
        paginationInterceptor.setMaxLimit(mybatisPlusProperties.getPageLimit());
        paginationInterceptor.setOverflow(mybatisPlusProperties.getOverflow().booleanValue());
        paginationInterceptor.setOptimizeJoin(mybatisPlusProperties.getOptimizeJoin().booleanValue());
        interceptor.addInnerInterceptor(paginationInterceptor);
        interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
        return interceptor;
    }
 
    @Bean
    public SqlLogInterceptor sqlLogInterceptor(MybatisPlusProperties mybatisPlusProperties) {
        return new SqlLogInterceptor(mybatisPlusProperties);
    }
 
    @ConditionalOnMissingBean({ISqlInjector.class})
    @Bean
    public ISqlInjector sqlInjector() {
        return new BladeSqlInjector();
    }
 
    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
        argumentResolvers.add(new PageArgumentResolver());
    }
 
    @Bean
    public MetaObjectHandler metaObjectHandler() {
        return new BladeMetaObjectHandler();
    }
}