add
This commit is contained in:
@ -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')")
|
||||
|
@ -38,6 +38,7 @@ public interface SysDictDataService extends SysDictApiService {
|
||||
* 批量删除字典数据信息
|
||||
*
|
||||
* @param ids 需要删除的字典数据ID
|
||||
* @return 结果
|
||||
*/
|
||||
int deleteByIds(List<String> ids);
|
||||
|
||||
@ -74,6 +75,14 @@ public interface SysDictDataService extends SysDictApiService {
|
||||
*/
|
||||
List<SysDictData> selectList(SysDictDataParam param);
|
||||
|
||||
/**
|
||||
* 根据字典类型查询字典数据
|
||||
*
|
||||
* @param dictType 字典类型
|
||||
* @return 字典数据集合信息
|
||||
*/
|
||||
List<SysDictData> selectByDictType(String dictType);
|
||||
|
||||
/**
|
||||
* 重置字典缓存数据
|
||||
*/
|
||||
|
@ -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<SysConfig> param2Wrapper(SysConfigParam param) {
|
||||
|
@ -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<String> 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<String, List<SysDictData>> dictDataMap = selectList(new SysDictDataParam()).stream().collect(Collectors.groupingBy(SysDictData::getDictType));
|
||||
for (Map.Entry<String, List<SysDictData>> 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<SysDictData> 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<SysDictData> selectFromCache(String dictType) {
|
||||
return redisService.getObjectList(DictConstant.SYS_DICT_KEY + dictType, SysDictData.class);
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
/**
|
||||
* 字典类型管理 服务层实现
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
Reference in New Issue
Block a user