From f2457ff1d8f1d6a5d331dbaea77922b433ce00f6 Mon Sep 17 00:00:00 2001 From: ailanyin Date: Mon, 5 Jun 2023 16:01:00 +0800 Subject: [PATCH] add --- .../system/service/SysConfigApiService.java | 2 +- .../api/system/service/SysDictApiService.java | 2 +- .../src/main/resources/application.yml | 4 +- .../auth/service/OnlineUserService.java | 10 ++++ .../service/impl/AuthConfigServiceImpl.java | 6 ++- .../service/impl/OnlineUserServiceImpl.java | 23 ++++++-- .../common/base/constants/BaseConstant.java | 14 ++--- .../common/base/constants/DictConstant.java | 16 ++++++ .../common/base/constants/TenantConstant.java | 21 ++++++++ .../qiaoba/common/base/entity/BasePage.java | 10 ++++ .../filters/DynamicDataSourceFilter.java | 3 +- .../common/redis/constants/CacheConstant.java | 51 ------------------ .../redis/service/impl/RedisServiceImpl.java | 5 +- .../controller/OnlineUserController.java | 6 +-- .../controller/SysDictDataController.java | 2 +- .../system/service/SysDictDataService.java | 9 ++++ .../service/impl/SysConfigServiceImpl.java | 6 +-- .../service/impl/SysDictDataServiceImpl.java | 52 +++++++++++++++++-- .../service/impl/SysDictTypeServiceImpl.java | 6 --- .../impl/SysUserDetailsServiceImpl.java | 8 +-- 20 files changed, 156 insertions(+), 100 deletions(-) create mode 100644 qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/DictConstant.java create mode 100644 qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/TenantConstant.java delete mode 100644 qiaoba-commons/qiaoba-common-redis/src/main/java/com/qiaoba/common/redis/constants/CacheConstant.java diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysConfigApiService.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysConfigApiService.java index ee9ee8b..e8f0e64 100644 --- a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysConfigApiService.java +++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysConfigApiService.java @@ -71,7 +71,7 @@ public interface SysConfigApiService { * 根据参数键名查询参数值 * * @param configKey configKey - * @return + * @return value */ String selectConfigByKey(String configKey); } diff --git a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDictApiService.java b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDictApiService.java index 3013a21..8f762eb 100644 --- a/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDictApiService.java +++ b/qiaoba-apis/qiaoba-api-system/src/main/java/com/qiaoba/api/system/service/SysDictApiService.java @@ -19,5 +19,5 @@ public interface SysDictApiService { * @param dictType 字典类型 * @return 字典数据集合信息 */ - List selectByDictType(String dictType); + List selectFromCache(String dictType); } diff --git a/qiaoba-application/src/main/resources/application.yml b/qiaoba-application/src/main/resources/application.yml index 86679c1..adbe967 100644 --- a/qiaoba-application/src/main/resources/application.yml +++ b/qiaoba-application/src/main/resources/application.yml @@ -51,7 +51,9 @@ springdoc: - group: '租户管理' paths-to-match: '/**' packages-to-scan: com.qiaoba.module.tenant.controller - + - group: '监控管理' + paths-to-match: '/**' + packages-to-scan: com.qiaoba.module.monitor.controller # knife4j的增强配置,不需要增强可以不配 knife4j: enable: true diff --git a/qiaoba-auth/src/main/java/com/qiaoba/auth/service/OnlineUserService.java b/qiaoba-auth/src/main/java/com/qiaoba/auth/service/OnlineUserService.java index 45a2cd9..6b8c8b0 100644 --- a/qiaoba-auth/src/main/java/com/qiaoba/auth/service/OnlineUserService.java +++ b/qiaoba-auth/src/main/java/com/qiaoba/auth/service/OnlineUserService.java @@ -1,6 +1,7 @@ package com.qiaoba.auth.service; import com.qiaoba.auth.entity.OnlineUser; +import com.qiaoba.common.base.entity.BasePage; import java.util.List; @@ -62,4 +63,13 @@ public interface OnlineUserService { */ Boolean checkIsLastLogged(String username, String deviceSn); + /** + * 分页查询列表 + * + * @param pageNum pageNum + * @param pageSize pageSize + * @param username username + * @return list + */ + BasePage selectPageList(Integer pageNum, Integer pageSize, String username); } diff --git a/qiaoba-auth/src/main/java/com/qiaoba/auth/service/impl/AuthConfigServiceImpl.java b/qiaoba-auth/src/main/java/com/qiaoba/auth/service/impl/AuthConfigServiceImpl.java index eac3993..c4d7624 100644 --- a/qiaoba-auth/src/main/java/com/qiaoba/auth/service/impl/AuthConfigServiceImpl.java +++ b/qiaoba-auth/src/main/java/com/qiaoba/auth/service/impl/AuthConfigServiceImpl.java @@ -43,11 +43,13 @@ public class AuthConfigServiceImpl implements AuthConfigApiService { if (StrUtil.isBlank(code) || StrUtil.isBlank(uuid)) { throw new ServiceException("验证码或uuid获取失败!"); } + + String realCode = redisService.getObject(SecurityConstant.CAPTCHA_KEY + uuid, String.class); try { - if (!redisService.hasKey(SecurityConstant.CAPTCHA_KEY + uuid)) { + if (StrUtil.isBlank(realCode)) { throw new ServiceException("验证码已经过期失效!"); } else { - if (!code.equalsIgnoreCase(redisService.get(SecurityConstant.CAPTCHA_KEY + uuid).toString())) { + if (!code.equalsIgnoreCase(realCode)) { throw new ServiceException("验证码输入错误!"); } } diff --git a/qiaoba-auth/src/main/java/com/qiaoba/auth/service/impl/OnlineUserServiceImpl.java b/qiaoba-auth/src/main/java/com/qiaoba/auth/service/impl/OnlineUserServiceImpl.java index 475c94a..ec967b0 100644 --- a/qiaoba-auth/src/main/java/com/qiaoba/auth/service/impl/OnlineUserServiceImpl.java +++ b/qiaoba-auth/src/main/java/com/qiaoba/auth/service/impl/OnlineUserServiceImpl.java @@ -1,5 +1,6 @@ package com.qiaoba.auth.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.qiaoba.api.auth.service.SysUserDetailsApiService; import com.qiaoba.auth.constants.SecurityConstant; @@ -8,6 +9,7 @@ import com.qiaoba.auth.entity.dto.OnlineUserDto; import com.qiaoba.auth.service.OnlineUserService; import com.qiaoba.auth.utils.TokenUtil; import com.qiaoba.common.base.constants.BaseConstant; +import com.qiaoba.common.base.entity.BasePage; import com.qiaoba.common.base.exceptions.ServiceException; import com.qiaoba.common.redis.service.RedisService; import lombok.RequiredArgsConstructor; @@ -60,11 +62,7 @@ public class OnlineUserServiceImpl implements OnlineUserService { @Override public OnlineUser selectOne(String username, String deviceSn) { - String key = handleKey(username, deviceSn); - if (redisService.hasKey(key)) { - return redisService.getObject(key, OnlineUser.class); - } - return null; + return redisService.getObject(handleKey(username, deviceSn), OnlineUser.class); } @Override @@ -88,6 +86,21 @@ public class OnlineUserServiceImpl implements OnlineUserService { return deviceSn.equals(loggedDevice); } + @Override + public BasePage selectPageList(Integer pageNum, Integer pageSize, String username) { + String key = SecurityConstant.ONLINE_USER_REDIS_KEY + "*"; + if (StrUtil.isNotBlank(username)) { + key = key + username + "*"; + } + List allKeys = CollUtil.newArrayList(redisService.getKeys(key)); + List keys = CollUtil.page(pageNum - 1, pageSize, allKeys); + List users = new ArrayList<>(); + for (String temp : keys) { + users.add(redisService.getObject(redisService.removeTenantPrefix(temp), OnlineUser.class)); + } + return BasePage.build(((Integer) allKeys.size()).longValue(), users); + } + private String handleKey(String key, String deviceSn) { return SecurityConstant.ONLINE_USER_REDIS_KEY + key + BaseConstant.COLON_JOIN_STR + deviceSn; } 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 f4ec72f..6c1f57e 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 @@ -59,18 +59,14 @@ public class BaseConstant { */ public static final String YES = "Y"; + /** + * 否 + */ + public static final String NO = "N"; + /** * 处理失败 个数 0 */ public static final Integer HANDLE_ERROR = 0; - /** - * 租户 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-base/src/main/java/com/qiaoba/common/base/constants/DictConstant.java b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/DictConstant.java new file mode 100644 index 0000000..f488533 --- /dev/null +++ b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/DictConstant.java @@ -0,0 +1,16 @@ +package com.qiaoba.common.base.constants; + +/** + * 字典常量 + * + * @author ailanyin + * @version 1.0 + * @since 2023-04-23 15:37:43 + */ +public class DictConstant { + + /** + * 字典 redis key + */ + public static final String SYS_DICT_KEY = "sys_dict:"; +} diff --git a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/TenantConstant.java b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/TenantConstant.java new file mode 100644 index 0000000..6f023a8 --- /dev/null +++ b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/constants/TenantConstant.java @@ -0,0 +1,21 @@ +package com.qiaoba.common.base.constants; + +/** + * 租户常量 + * + * @author ailanyin + * @version 1.0 + * @since 2023-04-23 15:37:43 + */ +public class TenantConstant { + + /** + * 租户 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-base/src/main/java/com/qiaoba/common/base/entity/BasePage.java b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/entity/BasePage.java index 8d37fa2..18da5ea 100644 --- a/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/entity/BasePage.java +++ b/qiaoba-commons/qiaoba-common-base/src/main/java/com/qiaoba/common/base/entity/BasePage.java @@ -62,10 +62,20 @@ public class BasePage implements Serializable { return basePage; } + public static BasePage build(Long total, List list) { + BasePage basePage = new BasePage<>(); + basePage.setCode(HttpStatus.HTTP_OK); + basePage.setMsg("查询成功"); + basePage.setRows(list); + basePage.setTotal(total); + return basePage; + } + public static BasePage build() { BasePage basePage = new BasePage<>(); basePage.setCode(HttpStatus.HTTP_OK); basePage.setMsg("查询成功"); return basePage; } + } 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 90aded2..c928570 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,6 +1,7 @@ package com.qiaoba.common.database.filters; import com.qiaoba.common.base.constants.BaseConstant; +import com.qiaoba.common.base.constants.TenantConstant; import com.qiaoba.common.base.context.BaseContext; import com.qiaoba.common.database.config.DynamicDataSourceContext; import com.qiaoba.common.database.constants.DynamicDatasourceConstant; @@ -45,7 +46,7 @@ public class DynamicDataSourceFilter extends OncePerRequestFilter { } private void before(HttpServletRequest request) { - String tenantId = request.getHeader(BaseConstant.HEADER_KEY_TENANT); + String tenantId = request.getHeader(TenantConstant.HEADER_KEY_TENANT); // todo //设置当前租户对应的数据源 BaseContext.setDataSource(DynamicDatasourceConstant.DEFAULT_MASTER_DATASOURCE_KEY); diff --git a/qiaoba-commons/qiaoba-common-redis/src/main/java/com/qiaoba/common/redis/constants/CacheConstant.java b/qiaoba-commons/qiaoba-common-redis/src/main/java/com/qiaoba/common/redis/constants/CacheConstant.java deleted file mode 100644 index eb11909..0000000 --- a/qiaoba-commons/qiaoba-common-redis/src/main/java/com/qiaoba/common/redis/constants/CacheConstant.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.qiaoba.common.redis.constants; - -/** - * 缓存的key 常量 - * - * @author ailanyin - * @version 1.0 - * @since 2021/10/2 0002 下午 17:41 - */ -public class CacheConstant { - - /** - * 登录用户 redis key - */ - public static final String LOGIN_USER_KEY = "login_users:"; - - /** - * 验证码 redis key - */ - public static final String CAPTCHA_CODE_KEY = "captcha_codes:"; - - /** - * 参数管理 cache key - */ - public static final String SYS_CONFIG_KEY = "sys_config:"; - - /** - * 字典管理 cache key - */ - public static final String SYS_DICT_KEY = "sys_dict:"; - - /** - * 防重提交 redis key - */ - public static final String REPEAT_SUBMIT_KEY = "repeat_submit:"; - - /** - * 限流 redis key - */ - public static final String RATE_LIMIT_KEY = "rate_limit:"; - - /** - * 登录账户密码错误次数 redis key - */ - public static final String PWD_ERR_CNT_KEY = "pwd_err_cnt:"; - - /** - * 角色拥有的权限Set - */ - public static final String ROLE_PERMS = "role_perms:role_"; -} diff --git a/qiaoba-commons/qiaoba-common-redis/src/main/java/com/qiaoba/common/redis/service/impl/RedisServiceImpl.java b/qiaoba-commons/qiaoba-common-redis/src/main/java/com/qiaoba/common/redis/service/impl/RedisServiceImpl.java index 06418c6..84cb1be 100644 --- a/qiaoba-commons/qiaoba-common-redis/src/main/java/com/qiaoba/common/redis/service/impl/RedisServiceImpl.java +++ b/qiaoba-commons/qiaoba-common-redis/src/main/java/com/qiaoba/common/redis/service/impl/RedisServiceImpl.java @@ -2,6 +2,7 @@ package com.qiaoba.common.redis.service.impl; import com.qiaoba.common.base.constants.BaseConstant; +import com.qiaoba.common.base.constants.TenantConstant; import com.qiaoba.common.base.context.BaseContext; import com.qiaoba.common.base.entity.BasePage; import com.qiaoba.common.redis.service.RedisService; @@ -253,14 +254,14 @@ public class RedisServiceImpl implements RedisService { @Override public String addTenantPrefix(String key) { StringBuilder sb = new StringBuilder(); - sb.append(BaseConstant.TENANT_KEY_PREFIX).append(BaseContext.getTenantId()).append(BaseConstant.COLON_JOIN_STR).append(key); + sb.append(TenantConstant.TENANT_KEY_PREFIX).append(BaseContext.getTenantId()).append(BaseConstant.COLON_JOIN_STR).append(key); return sb.toString(); } @Override public String removeTenantPrefix(String key) { StringBuilder sb = new StringBuilder(); - sb.append(BaseConstant.TENANT_KEY_PREFIX).append(BaseContext.getTenantId()).append(BaseConstant.COLON_JOIN_STR); + sb.append(TenantConstant.TENANT_KEY_PREFIX).append(BaseContext.getTenantId()).append(BaseConstant.COLON_JOIN_STR); return key.replace(sb.toString(), ""); } } diff --git a/qiaoba-modules/qiaoba-module-monitor/src/main/java/com/qiaoba/module/monitor/controller/OnlineUserController.java b/qiaoba-modules/qiaoba-module-monitor/src/main/java/com/qiaoba/module/monitor/controller/OnlineUserController.java index c25f891..fd62783 100644 --- a/qiaoba-modules/qiaoba-module-monitor/src/main/java/com/qiaoba/module/monitor/controller/OnlineUserController.java +++ b/qiaoba-modules/qiaoba-module-monitor/src/main/java/com/qiaoba/module/monitor/controller/OnlineUserController.java @@ -1,10 +1,8 @@ package com.qiaoba.module.monitor.controller; -import com.qiaoba.auth.entity.OnlineUser; import com.qiaoba.auth.service.OnlineUserService; import com.qiaoba.common.base.entity.BasePage; import com.qiaoba.common.base.result.AjaxResult; -import com.qiaoba.common.database.entity.TableDataInfo; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; @@ -30,8 +28,8 @@ public class OnlineUserController { @PreAuthorize("hasAuthority('monitor:online:list')") @Operation(summary = "获取列表") @GetMapping("/list") - public BasePage getList(String username) { - return TableDataInfo.build(onlineUserService.selectList(username)); + public BasePage getList(Integer pageNum, Integer pageSize, @RequestParam(required = false) String username) { + return onlineUserService.selectPageList(pageNum, pageSize, username); } @PreAuthorize("hasAuthority('monitor:online:forceLogout')") diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/controller/SysDictDataController.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/controller/SysDictDataController.java index 94164a9..5847704 100644 --- a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/controller/SysDictDataController.java +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/controller/SysDictDataController.java @@ -50,7 +50,7 @@ public class SysDictDataController { @GetMapping(value = "/type/{dictType}") public AjaxResult dictType(@PathVariable String dictType) { - return AjaxResult.success(sysDictDataService.selectByDictType(dictType)); + return AjaxResult.success(sysDictDataService.selectFromCache(dictType)); } @PreAuthorize("hasAuthority('system:dict:add')") 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 4bae402..2dab2c5 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 @@ -38,6 +38,7 @@ public interface SysDictDataService extends SysDictApiService { * 批量删除字典数据信息 * * @param ids 需要删除的字典数据ID + * @return 结果 */ int deleteByIds(List ids); @@ -74,6 +75,14 @@ public interface SysDictDataService extends SysDictApiService { */ List selectList(SysDictDataParam param); + /** + * 根据字典类型查询字典数据 + * + * @param dictType 字典类型 + * @return 字典数据集合信息 + */ + List selectByDictType(String dictType); + /** * 重置字典缓存数据 */ diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysConfigServiceImpl.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysConfigServiceImpl.java index 5bdf250..ed0ef7e 100644 --- a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysConfigServiceImpl.java +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysConfigServiceImpl.java @@ -111,11 +111,7 @@ public class SysConfigServiceImpl implements SysConfigService { @Override public String selectConfigByKey(String configKey) { - configKey = ConfigConstant.SYS_CONFIG_KEY_PREFIX + configKey; - if (redisService.hasKey(configKey)) { - return redisService.getObject(configKey, String.class); - } - return null; + return redisService.getObject(ConfigConstant.SYS_CONFIG_KEY_PREFIX + configKey, String.class); } private QueryWrapper param2Wrapper(SysConfigParam 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 b717399..5aee900 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 @@ -1,15 +1,18 @@ package com.qiaoba.module.system.service.impl; +import cn.hutool.core.collection.CollUtil; 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.param.SysDictDataParam; import com.qiaoba.auth.utils.SecurityUtil; +import com.qiaoba.common.base.constants.BaseConstant; +import com.qiaoba.common.base.constants.DictConstant; 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.SysDictDataMapper; import com.qiaoba.module.system.service.SysDictDataService; import lombok.RequiredArgsConstructor; @@ -18,11 +21,19 @@ import org.springframework.stereotype.Service; import java.util.*; import java.util.stream.Collectors; +/** + * 字典类型数据管理 服务层实现 + * + * @author ailanyin + * @version 1.0 + * @since 2022-09-22 04:20:28 + */ @Service @RequiredArgsConstructor public class SysDictDataServiceImpl implements SysDictDataService { private final SysDictDataMapper sysDictDataMapper; + private final RedisService redisService; @Override public String selectDictLabel(String dictType, String dictValue) { @@ -41,7 +52,12 @@ public class SysDictDataServiceImpl implements SysDictDataService { @Override public int deleteByIds(List ids) { - return sysDictDataMapper.deleteBatchIds(ids); + SysDictData sysDictData = selectById(ids.get(0)); + int result = sysDictDataMapper.deleteBatchIds(ids); + if (result > BaseConstant.HANDLE_ERROR) { + cacheDictData(sysDictData.getDictType()); + } + return result; } @Override @@ -49,7 +65,11 @@ public class SysDictDataServiceImpl implements SysDictDataService { checkAllowAddOrUpdate(sysDictData); sysDictData.setCreateTime(new Date()); sysDictData.setCreateUser(SecurityUtil.getLoginUsername()); - return sysDictDataMapper.insert(sysDictData); + int result = sysDictDataMapper.insert(sysDictData); + if (result > BaseConstant.HANDLE_ERROR) { + cacheDictData(sysDictData.getDictType()); + } + return result; } @Override @@ -57,7 +77,11 @@ public class SysDictDataServiceImpl implements SysDictDataService { checkAllowAddOrUpdate(sysDictData); sysDictData.setUpdateTime(new Date()); sysDictData.setUpdateUser(SecurityUtil.getLoginUsername()); - return sysDictDataMapper.updateById(sysDictData); + int result = sysDictDataMapper.updateById(sysDictData); + if (result > BaseConstant.HANDLE_ERROR) { + cacheDictData(sysDictData.getDictType()); + } + return result; } @Override @@ -72,7 +96,11 @@ public class SysDictDataServiceImpl implements SysDictDataService { @Override public void resetDictCache() { - + redisService.del(redisService.getKeys(DictConstant.SYS_DICT_KEY + "*")); + Map> dictDataMap = selectList(new SysDictDataParam()).stream().collect(Collectors.groupingBy(SysDictData::getDictType)); + for (Map.Entry> entry : dictDataMap.entrySet()) { + redisService.set(DictConstant.SYS_DICT_KEY + entry.getKey(), entry.getValue().stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList())); + } } @Override @@ -100,4 +128,18 @@ public class SysDictDataServiceImpl implements SysDictDataService { throw new ServiceException("数据键值已存在"); } } + + private void cacheDictData(String dictType) { + List dictData = selectByDictType(dictType); + if (CollUtil.isNotEmpty(dictData)) { + redisService.set(DictConstant.SYS_DICT_KEY + dictType, dictData.stream().sorted(Comparator.comparing(SysDictData::getDictSort)).collect(Collectors.toList())); + } else { + redisService.del(DictConstant.SYS_DICT_KEY + dictType); + } + } + + @Override + public List selectFromCache(String dictType) { + return redisService.getObjectList(DictConstant.SYS_DICT_KEY + dictType, SysDictData.class); + } } 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 8a325ea..1930874 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,26 +2,20 @@ 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; /** * 字典类型管理 服务层实现 diff --git a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysUserDetailsServiceImpl.java b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysUserDetailsServiceImpl.java index 7beae42..266d923 100644 --- a/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysUserDetailsServiceImpl.java +++ b/qiaoba-modules/qiaoba-module-system/src/main/java/com/qiaoba/module/system/service/impl/SysUserDetailsServiceImpl.java @@ -42,12 +42,8 @@ public class SysUserDetailsServiceImpl implements UserDetailsService, SysUserDet @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { - if (redisService.hasKey(SecurityConstant.USER_DETAILS_REDIS_KEY + username)) { - SecurityUser user = redisService.getObject(SecurityConstant.USER_DETAILS_REDIS_KEY + username, SecurityUser.class); - return new LoginUser(user.getDeviceSn(), user.getUserId(), user.getDeptId(), user.getUsername(), user.getNickname(), user.getRoles(), user.getRoleKeys(), user.getPermissions()); - } - - return null; + SecurityUser user = redisService.getObject(SecurityConstant.USER_DETAILS_REDIS_KEY + username, SecurityUser.class); + return Objects.isNull(user) ? null : new LoginUser(user.getDeviceSn(), user.getUserId(), user.getDeptId(), user.getUsername(), user.getNickname(), user.getRoles(), user.getRoleKeys(), user.getPermissions()); }