package com.ruoyi.system.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.ruoyi.common.constant.Constants; import com.ruoyi.common.core.domain.entity.SysDictData; import com.ruoyi.common.core.mybatisplus.core.ServicePlusImpl; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.utils.PageUtils; import com.ruoyi.common.utils.RedisUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.mapper.SysDictDataMapper; import com.ruoyi.system.service.ISysDictDataService; import org.springframework.stereotype.Service; import java.util.List; /** * 字典 业务层处理 * * @author Lion Li */ @Service public class SysDictDataServiceImpl extends ServicePlusImpl implements ISysDictDataService { @Override public TableDataInfo selectPageDictDataList(SysDictData dictData) { LambdaQueryWrapper lqw = new LambdaQueryWrapper() .eq(StringUtils.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType()) .like(StringUtils.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel()) .eq(StringUtils.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus()) .orderByAsc(SysDictData::getDictSort); return PageUtils.buildDataInfo(page(PageUtils.buildPage(), lqw)); } /** * 根据条件分页查询字典数据 * * @param dictData 字典数据信息 * @return 字典数据集合信息 */ @Override public List selectDictDataList(SysDictData dictData) { return list(new LambdaQueryWrapper() .eq(StringUtils.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType()) .like(StringUtils.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel()) .eq(StringUtils.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus()) .orderByAsc(SysDictData::getDictSort)); } /** * 根据字典类型和字典键值查询字典数据信息 * * @param dictType 字典类型 * @param dictValue 字典键值 * @return 字典标签 */ @Override public String selectDictLabel(String dictType, String dictValue) { return getOne(new LambdaQueryWrapper() .select(SysDictData::getDictLabel) .eq(SysDictData::getDictType, dictType) .eq(SysDictData::getDictValue, dictValue)) .getDictLabel(); } /** * 根据字典数据ID查询信息 * * @param dictCode 字典数据ID * @return 字典数据 */ @Override public SysDictData selectDictDataById(Long dictCode) { return getById(dictCode); } /** * 批量删除字典数据信息 * * @param dictCodes 需要删除的字典数据ID * @return 结果 */ @Override public void deleteDictDataByIds(Long[] dictCodes) { for (Long dictCode : dictCodes) { SysDictData data = selectDictDataById(dictCode); removeById(dictCode); List dictDatas = baseMapper.selectDictDataByType(data.getDictType()); RedisUtils.setCacheObject(getCacheKey(data.getDictType()), dictDatas); } } /** * 新增保存字典数据信息 * * @param data 字典数据信息 * @return 结果 */ @Override public int insertDictData(SysDictData data) { int row = baseMapper.insert(data); if (row > 0) { List dictDatas = baseMapper.selectDictDataByType(data.getDictType()); RedisUtils.setCacheObject(getCacheKey(data.getDictType()), dictDatas); } return row; } /** * 修改保存字典数据信息 * * @param data 字典数据信息 * @return 结果 */ @Override public int updateDictData(SysDictData data) { int row = baseMapper.updateById(data); if (row > 0) { List dictDatas = baseMapper.selectDictDataByType(data.getDictType()); RedisUtils.setCacheObject(getCacheKey(data.getDictType()), dictDatas); } return row; } /** * 设置cache key * * @param configKey 参数键 * @return 缓存键key */ String getCacheKey(String configKey) { return Constants.SYS_DICT_KEY + configKey; } }