he2802 4 лет назад
Родитель
Сommit
056f86a36c

+ 6 - 0
zhongzheng-api/src/main/java/com/zhongzheng/core/config/SwaggerConfig.java

@@ -131,6 +131,12 @@ public class SwaggerConfig
         // header query cookie
         parameterBuilder.name("X-Auth-Token").description("token").modelRef(new ModelRef("string")).parameterType("header").defaultValue("test").required(false);
         pars.add(parameterBuilder.build());
+        ParameterBuilder parameterBuilder1 = new ParameterBuilder();
+        parameterBuilder1.name("TenantId").description("TenantId").modelRef(new ModelRef("string")).parameterType("header").defaultValue("867735392558919680").required(false);
+        pars.add(parameterBuilder1.build());
+        ParameterBuilder parameterBuilder2 = new ParameterBuilder();
+        parameterBuilder2.name("AuthorizationToken").description("AuthorizationToken").modelRef(new ModelRef("string")).parameterType("header").defaultValue("WX 123").required(false);
+        pars.add(parameterBuilder2.build());
         return pars;
     }
 }

+ 6 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/config/MybatisPlusConfig.java

@@ -5,7 +5,9 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
 import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
 import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
+import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
 import com.zhongzheng.framework.mybatisplus.CreateAndUpdateMetaObjectHandler;
+import com.zhongzheng.framework.mybatisplus.CustomTenantLineHandler;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
@@ -17,6 +19,8 @@ public class MybatisPlusConfig {
 	@Bean
 	public MybatisPlusInterceptor mybatisPlusInterceptor() {
 		MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
+		// 多租户插件(注意:这个一定要放在最上面)
+		interceptor.addInnerInterceptor(new TenantLineInnerInterceptor(new CustomTenantLineHandler()));
 		// 分页插件
 		interceptor.addInnerInterceptor(paginationInnerInterceptor());
 		// 乐观锁插件
@@ -32,10 +36,12 @@ public class MybatisPlusConfig {
 	 */
 	public PaginationInnerInterceptor paginationInnerInterceptor() {
 		PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor();
+
 		// 设置数据库类型为mysql
 		paginationInnerInterceptor.setDbType(DbType.MYSQL);
 		// 设置最大单页限制数量,默认 500 条,-1 不受限制
 		paginationInnerInterceptor.setMaxLimit(-1L);
+
 		return paginationInnerInterceptor;
 	}
 

+ 64 - 0
zhongzheng-framework/src/main/java/com/zhongzheng/framework/mybatisplus/CustomTenantLineHandler.java

@@ -0,0 +1,64 @@
+package com.zhongzheng.framework.mybatisplus;
+
+import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
+import com.zhongzheng.common.utils.ServletUtils;
+import net.sf.jsqlparser.expression.Expression;
+import net.sf.jsqlparser.expression.LongValue;
+import org.apache.commons.compress.utils.Lists;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 多租户处理插件
+ *
+ * @author hjl
+ * @date 2021/07/30 13:37
+ */
+public class CustomTenantLineHandler implements TenantLineHandler {
+
+    /**
+     * 租户id字段名
+     */
+    public static final String TENANT_ID_COLUMN = "tenant_id";
+
+    /**
+     * 忽略添加租户ID的表
+     */
+    private final static List<String> IGNORE_TABLE_NAMES = new ArrayList<String>(){{
+        add("sys_tenant");
+    }};
+
+
+
+    /**
+     * 获取租户ID值表达式(可从cookie、token、缓存中取)
+     *
+     * @return
+     */
+    @Override
+    public Expression getTenantId() {
+        return new LongValue(ServletUtils.getRequest().getHeader("TenantId"));
+    }
+
+    /**
+     * 获取租户字段名(数据库的租户ID字段名)
+     *
+     * @return
+     */
+    @Override
+    public String getTenantIdColumn() {
+        return TENANT_ID_COLUMN;
+    }
+
+    /**
+     * 根据表名判断是否忽略拼接多租户条件
+     *
+     * @param tableName
+     * @return
+     */
+    @Override
+    public boolean ignoreTable(String tableName) {
+        return IGNORE_TABLE_NAMES.contains(tableName);
+    }
+}

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysConfigServiceImpl.java

@@ -39,10 +39,10 @@ public class SysConfigServiceImpl extends ServiceImpl<SysConfigMapper, SysConfig
      */
     @PostConstruct
     public void init() {
-        List<SysConfig> configsList = baseMapper.selectList(new LambdaQueryWrapper<>());
+      /*  List<SysConfig> configsList = baseMapper.selectList(new LambdaQueryWrapper<>());
         for (SysConfig config : configsList) {
             redisCache.setCacheObject(getCacheKey(config.getConfigKey()), config.getConfigValue());
-        }
+        }*/
     }
 
     /**

+ 2 - 2
zhongzheng-system/src/main/java/com/zhongzheng/modules/system/service/impl/SysDictTypeServiceImpl.java

@@ -39,7 +39,7 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
      */
     @PostConstruct
     public void init() {
-        List<SysDictType> dictTypeList = list();
+       /* List<SysDictType> dictTypeList = list();
         for (SysDictType dictType : dictTypeList) {
             List<SysDictData> dictDatas = dictDataMapper.selectList(
                     new LambdaQueryWrapper<SysDictData>()
@@ -47,7 +47,7 @@ public class SysDictTypeServiceImpl extends ServiceImpl<SysDictTypeMapper, SysDi
                             .eq(SysDictData::getDictType, dictType.getDictType())
                             .orderByAsc(SysDictData::getDictSort));
             DictUtils.setDictCache(dictType.getDictType(), dictDatas);
-        }
+        }*/
     }
 
     /**