Skip to content

字典管理

字典管理用于后端返回数据中编码向中文转换。如:后端返回1、2、3、admin、P、U等编码,在前端展示时需要将这些编码转换成对应的中文。

添加和修改字典说明


标识为重要的表示系统已经使用该数据,标识为不重要的表示系统未使用该数据仅仅只是做一个记录:

  • 字典名称(重要):字典的名称
  • 字典类型(重要):字典的类型,全局唯一
  • 字典描述(不重要):字典说明信息
  • 字典key(重要):在这个字典类型中唯一,相当于code编码
  • 字典value(重要):中文说明,相当于label说明
  • 字典样式(重要):数据转换后呈现的样式
  • 排序(重要):字典显示的顺序
  • 状态(重要):字典是启用还是禁用

自定义字典

有一些数据是动态的,无法通过字典管理中去配置,比如在角色管理中新增了一个角色,再添加用户时给用户赋予角色就需要把刚新增的角色展示出来,你可以写一个单独获取角色列表的接口并把数据展示到下拉框中,但对于前端来说有些麻烦,所以增加了这个自定义字典功能。
自定义字典相关的代码在com.minimalist.basic.config.eDict包中,处理逻辑是在项目启动时,将自定义字典的处理方式放入内存中,当前端根据字典类型获取字典数据时,先校验该字典类型的处理方式是否在内存中,如果在内存中,则使用内存中的处理方式进行数据获取并返回;如果不在内存中,就走字典管理表进行获取并返回。

使用方式

提供了@EDict注解,该注解有一个参数dictType,需要指定字典类型,并将这个注解写在方法上,表示这个方法是针对哪个字典类型进行数据获取的,如:

java
@EDict(dictType = EDictConstant.ROLE_LIST)
public DictCacheVO getRoleDictData() {
    DictCacheVO dictCacheVO = new DictCacheVO();
    dictCacheVO.setDictType(EDictConstant.ROLE_LIST);
    //查询角色列表
    List<MRole> roleList = roleMapper.selectRoleDict();
    if (CollectionUtil.isNotEmpty(roleList)) {
        List<DictCacheVO.DictKV> dictKVList = roleList.stream().map(role -> {
            DictCacheVO.DictKV dictKV = new DictCacheVO.DictKV();
            dictKV.setDictKey(role.getRoleId().toString());
            dictKV.setDictValue(role.getRoleName());
            dictKV.setDictType(EDictConstant.ROLE_LIST);
            return dictKV;
        }).toList();
        dictCacheVO.setDictList(dictKVList);
    }
    return dictCacheVO;
}

程序启动后,会做一个key,value映射,key=字典类型,value=Method,当前端获取字典时,通过字典类型key查询value,就可以获取到Method,从而进行调用并返回字典数据。