package com.moral.api.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.moral.api.entity.SysDictData; import com.moral.api.entity.SysDictType; import com.moral.api.mapper.SysDictDataMapper; import com.moral.api.mapper.SysDictTypeMapper; import com.moral.api.service.SysDictDataService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.moral.constant.RedisConstants; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.stereotype.Service; import org.springframework.util.ObjectUtils; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; /** *

* 字典表 服务实现类 *

* * @author moral * @since 2021-03-09 */ @Service public class SysDictDataServiceImpl extends ServiceImpl implements SysDictDataService { @Autowired private SysDictDataMapper sysDictDataMapper; @Autowired private SysDictTypeMapper sysDictTypeMapper; @Autowired private RedisTemplate redisTemplate; @Override public Map getSysDictDataByDictType(String type) { Map result = new HashMap<>(); //先从redis获取 Map sysDict = (Map) redisTemplate.opsForValue().get(RedisConstants.DICT_DATA_KEY); List dictData = (List) sysDict.get(type); for (SysDictData dictDatum : dictData) { result.put(dictDatum.getDataKey(), dictDatum.getDataValue()); } if (!ObjectUtils.isEmpty(result)) { return result; } //根据字典类型名字获取字典类型id QueryWrapper sysDictTypeQueryWrapper = new QueryWrapper<>(); sysDictTypeQueryWrapper.select("id").eq("name", type); SysDictType sysDictType = sysDictTypeMapper.selectOne(sysDictTypeQueryWrapper); //根据字典类型id获取字典数据详情 QueryWrapper sysDictDataQueryWrapper = new QueryWrapper<>(); sysDictDataQueryWrapper.select("dataKey", "dataValue").eq("dict_type_id", sysDictType.getId()); List sysDictData = sysDictDataMapper.selectList(sysDictDataQueryWrapper); return sysDictData.stream().collect(Collectors.toMap(SysDictData::getDataKey, SysDictData::getDataValue, (a, b) -> b)); } }