SysDictDataServiceImpl.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package com.ruoyi.system.service.impl;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import com.ruoyi.common.constant.CacheConstants;
  5. import com.ruoyi.common.core.domain.PageQuery;
  6. import com.ruoyi.common.core.domain.entity.SysDictData;
  7. import com.ruoyi.common.core.page.TableDataInfo;
  8. import com.ruoyi.common.utils.StringUtils;
  9. import com.ruoyi.common.utils.redis.RedisUtils;
  10. import com.ruoyi.system.mapper.SysDictDataMapper;
  11. import com.ruoyi.system.service.ISysDictDataService;
  12. import lombok.RequiredArgsConstructor;
  13. import org.springframework.stereotype.Service;
  14. import java.util.List;
  15. /**
  16. * 字典 业务层处理
  17. *
  18. * @author Lion Li
  19. */
  20. @RequiredArgsConstructor
  21. @Service
  22. public class SysDictDataServiceImpl implements ISysDictDataService {
  23. private final SysDictDataMapper baseMapper;
  24. @Override
  25. public TableDataInfo<SysDictData> selectPageDictDataList(SysDictData dictData, PageQuery pageQuery) {
  26. LambdaQueryWrapper<SysDictData> lqw = new LambdaQueryWrapper<SysDictData>()
  27. .eq(StringUtils.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
  28. .like(StringUtils.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
  29. .eq(StringUtils.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
  30. .orderByAsc(SysDictData::getDictSort);
  31. Page<SysDictData> page = baseMapper.selectPage(pageQuery.build(), lqw);
  32. return TableDataInfo.build(page);
  33. }
  34. /**
  35. * 根据条件分页查询字典数据
  36. *
  37. * @param dictData 字典数据信息
  38. * @return 字典数据集合信息
  39. */
  40. @Override
  41. public List<SysDictData> selectDictDataList(SysDictData dictData) {
  42. return baseMapper.selectList(new LambdaQueryWrapper<SysDictData>()
  43. .eq(StringUtils.isNotBlank(dictData.getDictType()), SysDictData::getDictType, dictData.getDictType())
  44. .like(StringUtils.isNotBlank(dictData.getDictLabel()), SysDictData::getDictLabel, dictData.getDictLabel())
  45. .eq(StringUtils.isNotBlank(dictData.getStatus()), SysDictData::getStatus, dictData.getStatus())
  46. .orderByAsc(SysDictData::getDictSort));
  47. }
  48. /**
  49. * 根据字典类型和字典键值查询字典数据信息
  50. *
  51. * @param dictType 字典类型
  52. * @param dictValue 字典键值
  53. * @return 字典标签
  54. */
  55. @Override
  56. public String selectDictLabel(String dictType, String dictValue) {
  57. return baseMapper.selectOne(new LambdaQueryWrapper<SysDictData>()
  58. .select(SysDictData::getDictLabel)
  59. .eq(SysDictData::getDictType, dictType)
  60. .eq(SysDictData::getDictValue, dictValue))
  61. .getDictLabel();
  62. }
  63. /**
  64. * 根据字典数据ID查询信息
  65. *
  66. * @param dictCode 字典数据ID
  67. * @return 字典数据
  68. */
  69. @Override
  70. public SysDictData selectDictDataById(Long dictCode) {
  71. return baseMapper.selectById(dictCode);
  72. }
  73. /**
  74. * 批量删除字典数据信息
  75. *
  76. * @param dictCodes 需要删除的字典数据ID
  77. */
  78. @Override
  79. public void deleteDictDataByIds(Long[] dictCodes) {
  80. for (Long dictCode : dictCodes) {
  81. SysDictData data = selectDictDataById(dictCode);
  82. baseMapper.deleteById(dictCode);
  83. List<SysDictData> dictDatas = baseMapper.selectDictDataByType(data.getDictType());
  84. RedisUtils.setCacheObject(getCacheKey(data.getDictType()), dictDatas);
  85. }
  86. }
  87. /**
  88. * 新增保存字典数据信息
  89. *
  90. * @param data 字典数据信息
  91. * @return 结果
  92. */
  93. @Override
  94. public int insertDictData(SysDictData data) {
  95. int row = baseMapper.insert(data);
  96. if (row > 0) {
  97. List<SysDictData> dictDatas = baseMapper.selectDictDataByType(data.getDictType());
  98. RedisUtils.setCacheObject(getCacheKey(data.getDictType()), dictDatas);
  99. }
  100. return row;
  101. }
  102. /**
  103. * 修改保存字典数据信息
  104. *
  105. * @param data 字典数据信息
  106. * @return 结果
  107. */
  108. @Override
  109. public int updateDictData(SysDictData data) {
  110. int row = baseMapper.updateById(data);
  111. if (row > 0) {
  112. List<SysDictData> dictDatas = baseMapper.selectDictDataByType(data.getDictType());
  113. RedisUtils.setCacheObject(getCacheKey(data.getDictType()), dictDatas);
  114. }
  115. return row;
  116. }
  117. /**
  118. * 设置cache key
  119. *
  120. * @param configKey 参数键
  121. * @return 缓存键key
  122. */
  123. String getCacheKey(String configKey) {
  124. return CacheConstants.SYS_DICT_KEY + configKey;
  125. }
  126. }