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> 
 | 
 * 字典表 服务实现类 
 | 
 * </p> 
 | 
 * 
 | 
 * @author moral 
 | 
 * @since 2021-03-09 
 | 
 */ 
 | 
@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)); 
 | 
    } 
 | 
} 
 |