This commit is contained in:
2023-06-02 18:12:51 +08:00
parent 603b8c1c9f
commit 951a08a0a1
7 changed files with 44 additions and 6 deletions

View File

@ -68,4 +68,9 @@ public class BaseConstant {
* 租户 key 前缀 * 租户 key 前缀
*/ */
public static final String TENANT_KEY_PREFIX = "tenant_"; public static final String TENANT_KEY_PREFIX = "tenant_";
/**
* header 租户 key
*/
public static final String HEADER_KEY_TENANT = "tenant";
} }

View File

@ -1,5 +1,6 @@
package com.qiaoba.common.database.filters; package com.qiaoba.common.database.filters;
import com.qiaoba.common.base.constants.BaseConstant;
import com.qiaoba.common.base.context.BaseContext; import com.qiaoba.common.base.context.BaseContext;
import com.qiaoba.common.database.config.DynamicDataSourceContext; import com.qiaoba.common.database.config.DynamicDataSourceContext;
import com.qiaoba.common.database.constants.DynamicDatasourceConstant; import com.qiaoba.common.database.constants.DynamicDatasourceConstant;
@ -32,7 +33,7 @@ public class DynamicDataSourceFilter extends OncePerRequestFilter {
@Override @Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
before(); before(request);
filterChain.doFilter(request, response); filterChain.doFilter(request, response);
after(); after();
} }
@ -43,12 +44,13 @@ public class DynamicDataSourceFilter extends OncePerRequestFilter {
return false; return false;
} }
private void before() { private void before(HttpServletRequest request) {
String tenantId = request.getHeader(BaseConstant.HEADER_KEY_TENANT);
// todo // todo
//设置当前租户对应的数据源 //设置当前租户对应的数据源
BaseContext.setDataSource(DynamicDatasourceConstant.DEFAULT_MASTER_DATASOURCE_KEY); BaseContext.setDataSource(DynamicDatasourceConstant.DEFAULT_MASTER_DATASOURCE_KEY);
//设置当前租户对应的租户ID //设置当前租户对应的租户ID
BaseContext.setTenantId("1"); BaseContext.setTenantId(tenantId);
//设置当前租户对应的数据库类型 //设置当前租户对应的数据库类型
BaseContext.setDatabaseType("MySQL"); BaseContext.setDatabaseType("MySQL");
} }

View File

@ -6,6 +6,7 @@ import com.qiaoba.common.base.result.AjaxResult;
import com.qiaoba.common.database.entity.PageQuery; import com.qiaoba.common.database.entity.PageQuery;
import com.qiaoba.common.database.entity.TableDataInfo; import com.qiaoba.common.database.entity.TableDataInfo;
import com.qiaoba.common.poi.utils.ExcelUtil; import com.qiaoba.common.poi.utils.ExcelUtil;
import com.qiaoba.module.system.service.SysDictDataService;
import com.qiaoba.module.system.service.SysDictTypeService; import com.qiaoba.module.system.service.SysDictTypeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.security.access.prepost.PreAuthorize;
@ -27,6 +28,8 @@ import java.util.List;
public class SysDictTypeController { public class SysDictTypeController {
private final SysDictTypeService sysDictTypeService; private final SysDictTypeService sysDictTypeService;
private final SysDictDataService sysDictDataService;
@PreAuthorize("hasAuthority('system:dict:list')") @PreAuthorize("hasAuthority('system:dict:list')")
@GetMapping("/list") @GetMapping("/list")
@ -64,4 +67,11 @@ public class SysDictTypeController {
public AjaxResult remove(@PathVariable List<String> ids) { public AjaxResult remove(@PathVariable List<String> ids) {
return AjaxResult.toAjax(sysDictTypeService.deleteByIds(ids)); return AjaxResult.toAjax(sysDictTypeService.deleteByIds(ids));
} }
@PreAuthorize("hasAuthority('system:dict:remove')")
@DeleteMapping("/refreshCache")
public AjaxResult refreshCache() {
sysDictDataService.resetDictCache();
return AjaxResult.success();
}
} }

View File

@ -73,4 +73,9 @@ public interface SysDictDataService extends SysDictApiService {
* @return list * @return list
*/ */
List<SysDictData> selectList(SysDictDataParam param); List<SysDictData> selectList(SysDictDataParam param);
/**
* 重置字典缓存数据
*/
void resetDictCache();
} }

View File

@ -65,4 +65,5 @@ public interface SysDictTypeService {
* @return list * @return list
*/ */
List<SysDictType> selectList(SysDictTypeParam param); List<SysDictType> selectList(SysDictTypeParam param);
} }

View File

@ -9,14 +9,14 @@ import com.qiaoba.auth.utils.SecurityUtil;
import com.qiaoba.common.base.exceptions.ServiceException; import com.qiaoba.common.base.exceptions.ServiceException;
import com.qiaoba.common.database.entity.PageQuery; import com.qiaoba.common.database.entity.PageQuery;
import com.qiaoba.common.database.entity.TableDataInfo; 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.mapper.SysDictDataMapper;
import com.qiaoba.module.system.service.SysDictDataService; import com.qiaoba.module.system.service.SysDictDataService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Date; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
import java.util.Objects;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@ -70,6 +70,11 @@ public class SysDictDataServiceImpl implements SysDictDataService {
return sysDictDataMapper.selectList(param2Wrapper(param)); return sysDictDataMapper.selectList(param2Wrapper(param));
} }
@Override
public void resetDictCache() {
}
@Override @Override
public List<SysDictData> selectByDictType(String dictType) { public List<SysDictData> selectByDictType(String dictType) {
return sysDictDataMapper.selectList(param2Wrapper(new SysDictDataParam(dictType))); return sysDictDataMapper.selectList(param2Wrapper(new SysDictDataParam(dictType)));

View File

@ -2,19 +2,26 @@ package com.qiaoba.module.system.service.impl;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; 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.SysDictType;
import com.qiaoba.api.system.entity.param.SysDictDataParam;
import com.qiaoba.api.system.entity.param.SysDictTypeParam; import com.qiaoba.api.system.entity.param.SysDictTypeParam;
import com.qiaoba.auth.utils.SecurityUtil; import com.qiaoba.auth.utils.SecurityUtil;
import com.qiaoba.common.base.exceptions.ServiceException; import com.qiaoba.common.base.exceptions.ServiceException;
import com.qiaoba.common.database.entity.PageQuery; import com.qiaoba.common.database.entity.PageQuery;
import com.qiaoba.common.database.entity.TableDataInfo; 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.mapper.SysDictTypeMapper;
import com.qiaoba.module.system.service.SysDictTypeService; import com.qiaoba.module.system.service.SysDictTypeService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.List; 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 { public class SysDictTypeServiceImpl implements SysDictTypeService {
private final SysDictTypeMapper sysDictTypeMapper; private final SysDictTypeMapper sysDictTypeMapper;
private final RedisService redisService;
@Override @Override
public int insert(SysDictType sysDictType) { public int insert(SysDictType sysDictType) {
@ -66,6 +75,7 @@ public class SysDictTypeServiceImpl implements SysDictTypeService {
return sysDictTypeMapper.selectList(param2Wrapper(param)); return sysDictTypeMapper.selectList(param2Wrapper(param));
} }
private void checkAllowInsertOrUpdate(SysDictType sysDictType) { private void checkAllowInsertOrUpdate(SysDictType sysDictType) {
String dictType = sysDictTypeMapper.checkDictTypeUnique(sysDictType); String dictType = sysDictTypeMapper.checkDictTypeUnique(sysDictType);
if (StrUtil.isNotBlank(dictType)) { if (StrUtil.isNotBlank(dictType)) {