From 951a08a0a187be5c92e72b9c59610af5377785fb Mon Sep 17 00:00:00 2001 From: ailanyin Date: Fri, 2 Jun 2023 18:12:51 +0800 Subject: [PATCH] add --- .../qiaoba/common/base/constants/BaseConstant.java | 5 +++++ .../database/filters/DynamicDataSourceFilter.java | 8 +++++--- .../system/controller/SysDictTypeController.java | 10 ++++++++++ .../module/system/service/SysDictDataService.java | 5 +++++ .../module/system/service/SysDictTypeService.java | 1 + .../system/service/impl/SysDictDataServiceImpl.java | 11 ++++++++--- .../system/service/impl/SysDictTypeServiceImpl.java | 10 ++++++++++ 7 files changed, 44 insertions(+), 6 deletions(-) diff --git a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/BaseConstant.java b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/BaseConstant.java index dfe05f7..f4ec72f 100644 --- a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/BaseConstant.java +++ b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/BaseConstant.java @@ -68,4 +68,9 @@ public class BaseConstant { * 租户 key 前缀 */ public static final String TENANT_KEY_PREFIX = "tenant_"; + + /** + * header 租户 key + */ + public static final String HEADER_KEY_TENANT = "tenant"; } diff --git a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/filters/DynamicDataSourceFilter.java b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/filters/DynamicDataSourceFilter.java index 5f65cf9..90aded2 100644 --- a/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/filters/DynamicDataSourceFilter.java +++ b/qiaoba-commons/qiaoba-common-datasource/src/main/java/com/qiaoba/common/database/filters/DynamicDataSourceFilter.java @@ -1,5 +1,6 @@ package com.qiaoba.common.database.filters; +import com.qiaoba.common.base.constants.BaseConstant; import com.qiaoba.common.base.context.BaseContext; import com.qiaoba.common.database.config.DynamicDataSourceContext; import com.qiaoba.common.database.constants.DynamicDatasourceConstant; @@ -32,7 +33,7 @@ public class DynamicDataSourceFilter extends OncePerRequestFilter { @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { - before(); + before(request); filterChain.doFilter(request, response); after(); } @@ -43,12 +44,13 @@ public class DynamicDataSourceFilter extends OncePerRequestFilter { return false; } - private void before() { + private void before(HttpServletRequest request) { + String tenantId = request.getHeader(BaseConstant.HEADER_KEY_TENANT); // todo //设置当前租户对应的数据源 BaseContext.setDataSource(DynamicDatasourceConstant.DEFAULT_MASTER_DATASOURCE_KEY); //设置当前租户对应的租户ID - BaseContext.setTenantId("1"); + BaseContext.setTenantId(tenantId); //设置当前租户对应的数据库类型 BaseContext.setDatabaseType("MySQL"); } diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/controller/SysDictTypeController.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/controller/SysDictTypeController.java index 57a0485..fe0fa85 100644 --- a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/controller/SysDictTypeController.java +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/controller/SysDictTypeController.java @@ -6,6 +6,7 @@ import com.qiaoba.common.base.result.AjaxResult; import com.qiaoba.common.database.entity.PageQuery; import com.qiaoba.common.database.entity.TableDataInfo; import com.qiaoba.common.poi.utils.ExcelUtil; +import com.qiaoba.module.system.service.SysDictDataService; import com.qiaoba.module.system.service.SysDictTypeService; import lombok.RequiredArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; @@ -27,6 +28,8 @@ import java.util.List; public class SysDictTypeController { private final SysDictTypeService sysDictTypeService; + private final SysDictDataService sysDictDataService; + @PreAuthorize("hasAuthority('system:dict:list')") @GetMapping("/list") @@ -64,4 +67,11 @@ public class SysDictTypeController { public AjaxResult remove(@PathVariable List ids) { return AjaxResult.toAjax(sysDictTypeService.deleteByIds(ids)); } + + @PreAuthorize("hasAuthority('system:dict:remove')") + @DeleteMapping("/refreshCache") + public AjaxResult refreshCache() { + sysDictDataService.resetDictCache(); + return AjaxResult.success(); + } } diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictDataService.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictDataService.java index 815305e..4bae402 100644 --- a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictDataService.java +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictDataService.java @@ -73,4 +73,9 @@ public interface SysDictDataService extends SysDictApiService { * @return list */ List selectList(SysDictDataParam param); + + /** + * 重置字典缓存数据 + */ + void resetDictCache(); } diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictTypeService.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictTypeService.java index 96a1404..04db009 100644 --- a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictTypeService.java +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/SysDictTypeService.java @@ -65,4 +65,5 @@ public interface SysDictTypeService { * @return list */ List selectList(SysDictTypeParam param); + } diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictDataServiceImpl.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictDataServiceImpl.java index fabdd28..b717399 100644 --- a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictDataServiceImpl.java +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictDataServiceImpl.java @@ -9,14 +9,14 @@ import com.qiaoba.auth.utils.SecurityUtil; import com.qiaoba.common.base.exceptions.ServiceException; import com.qiaoba.common.database.entity.PageQuery; import com.qiaoba.common.database.entity.TableDataInfo; +import com.qiaoba.common.redis.constants.CacheConstant; import com.qiaoba.module.system.mapper.SysDictDataMapper; import com.qiaoba.module.system.service.SysDictDataService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; -import java.util.Date; -import java.util.List; -import java.util.Objects; +import java.util.*; +import java.util.stream.Collectors; @Service @RequiredArgsConstructor @@ -70,6 +70,11 @@ public class SysDictDataServiceImpl implements SysDictDataService { return sysDictDataMapper.selectList(param2Wrapper(param)); } + @Override + public void resetDictCache() { + + } + @Override public List selectByDictType(String dictType) { return sysDictDataMapper.selectList(param2Wrapper(new SysDictDataParam(dictType))); diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictTypeServiceImpl.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictTypeServiceImpl.java index 45cefc1..8a325ea 100644 --- a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictTypeServiceImpl.java +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysDictTypeServiceImpl.java @@ -2,19 +2,26 @@ package com.qiaoba.module.system.service.impl; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.qiaoba.api.system.entity.SysDictData; import com.qiaoba.api.system.entity.SysDictType; +import com.qiaoba.api.system.entity.param.SysDictDataParam; import com.qiaoba.api.system.entity.param.SysDictTypeParam; import com.qiaoba.auth.utils.SecurityUtil; import com.qiaoba.common.base.exceptions.ServiceException; import com.qiaoba.common.database.entity.PageQuery; import com.qiaoba.common.database.entity.TableDataInfo; +import com.qiaoba.common.redis.constants.CacheConstant; +import com.qiaoba.common.redis.service.RedisService; import com.qiaoba.module.system.mapper.SysDictTypeMapper; import com.qiaoba.module.system.service.SysDictTypeService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; +import java.util.Comparator; import java.util.Date; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * 字典类型管理 服务层实现 @@ -28,6 +35,8 @@ import java.util.List; public class SysDictTypeServiceImpl implements SysDictTypeService { private final SysDictTypeMapper sysDictTypeMapper; + private final RedisService redisService; + @Override public int insert(SysDictType sysDictType) { @@ -66,6 +75,7 @@ public class SysDictTypeServiceImpl implements SysDictTypeService { return sysDictTypeMapper.selectList(param2Wrapper(param)); } + private void checkAllowInsertOrUpdate(SysDictType sysDictType) { String dictType = sysDictTypeMapper.checkDictTypeUnique(sysDictType); if (StrUtil.isNotBlank(dictType)) {