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